Android通过命令行签名APK

一、前几天安装一个客户APP时,提示 INSTALL_PARSE_FAILED_NO_CERTIFICATES 错误,无法安装应用。经过查询资料才发现,这个APK文件是没有签名的。

1、如果安装APP时遇到这个问题,可以通过命令去判断APK一否已签名。进入Windows控制台,切换路径到JDK的bin目录下。


2、检验APK文件是否已签名:jarsigner.exe -verify app-release.apk(apk路径)

如果文件没有签名,我们可以通过命令生成一个签名文件

keytool -genkey -alias test.keystore -keyalg RSA -validity 20000 -keystore test.keystore 
执行上述命令后,需要输入一连串信息,如实输入即可。

3、生成签名文件后,用该签名文件对APK进行签名。
jarsigner.exe -verbose -keystore test.keystore -signedjar app-release_mysigned.apk app-release.apk test.keystore

签名后可以再次验证APK是否已签名,或安装到设备上测试。


二、曾经还遇到过一种无法安装APP的情况,安装APP时,提示 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误

。出现这个错误的原因是该应用为了具备系统权限,设置了 android:sharedUserId="android.uid.system" 。

1、这样的好处是应用不容易被系统杀掉,但是其签名文件必须与系统签名文件一致,需要这三个文件(signapk.jar platform.x509.pem platform.pk8)。再执行如下代码,对APP进行签名。


2、java -jar signapk.jar platform.x509.pem platform.pk8 apk路径(签名前) apk路径(签名后)


三、使用android studio生成的.jks 文件签名时,也遇到过提示 (命令行jarsigner签字和解决找不到证书链错误 )的错误信息。执行签名的指令如下:

1、jarsigner -digestalg SHA1 -sigalg SHA1withRSA(或SHA1withDSA) -verbose -keystore xxx.jks -signedjar xxx.apk(签名后的apk名字) xxx.apk(需要签名的apk) xxx(keystore别名)


2、特别需要注意的是最后一个参数是keystore别名,也就是签名文件的别名,如果像.keystore一样,直接使用文件名,就会提示无法找到证书链错误。别名是使用AS创建签名文件时,设置Alias的参数就是别名。



  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值