最近因为项目上线,要配合运营的童鞋们上传各渠道apk,其中,搜狗的渠道因为迁移问题,需要给一个他们提供的空的apk签名,然后用公司的签名文件进行签名
没办法,只能手动给apk签名,网上搜索一片均不太完善,特总结一下成功的经验供各位童鞋参考!
首先,相信各位童鞋都已配好java环境:
- 将要签名的apk,签名文件放到同一个文件夹,我这里需要签名的apk为unsign.apk,签名文件为sign.apk
- cd到此目录下,输入
jarsigner -verbose -keystore sign -signedjar sign.apk unsign.apk sign
解释一下:jarsigner 签名命令 java/bin目录下的一个签名工具-verbose 输出签名的详细信息-keystore 密钥库位置 后面跟签名文件路径,因为现在在同一个文件夹下,只需要输入文件名称即可-signedjar sign.apk unsign.apk sign 正式签名,三个参数中依次为签名后产生的文件sign.apk ,要签名的文件unsign.apk和签名文件的别名key alias - 根据各位童鞋的具体情况替换具体文件名或路径,执行以下,有大部分人可能会碰到一下错误
jarsigner:找不到VCinemaKey.keystore的证书链。VCinemaKey.keystore必须引用包
各方百度,说的都不太对,其实,问题主要出现在这里jarsigner -verbose -keystore sign -signedjar sign.apk unsign.apk sign
此时的签名文件为sign,alias为sign,并没有什么问题,可是大部分人,可能签名文件名为 xxx.keystore或者其他名称问题就在这里,使用手动签名,必须保证签名文件名称和别名alias一致,这也是其他地方含糊不清的地方 - 查看alias,利用studio签名 导入签名文件后可以看到签名的别名
- 修改签名文件的名称和别名一致,然后重新运行上述命令,签名成功,大功告成!!