Android通过命令行签名APK
2018-01-03 10:39
387 查看
一、前几天安装一个客户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的参数就是别名。
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的参数就是别名。
相关文章推荐
- android开发命令行给apk签名
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 关于Android安全和通过命令给apk签名
- android 通过命令行启动Apk
- 关于Android安全和通过命令给apk签名
- Android studio 通过build.gradle 配置打包签名文件,生成 xxx.apk
- 关于Android安全和通过命令给apk签名
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 签名之使用命令行给apk签名
- Android开发之使用Ant命令行编译和APK签名
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- android推广识别,根据下载地址识别区分推广人的id(在服务器上面动态解压,打包,签名apk)亲测通过,非常完整。
- android项目通过命令生成和签名apk
- 通过signapk.jar 为Android 应用程序签名,并优化签名后的APK应用程序
- android 通过命令行启动Apk
- Android命令行用已有的keystore对apk进行签名
- Android studio + Gradle 或 命令行 进行apk签名打包
- [置顶] Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包