我已经解码的apktool的APK(如原始的源代码丢失了),所以我可以修复的布局XML文件的一些问题。 然后我重建它回来了apktool,当我试图给我的设备上安装它(请使用adb:ADB安装appname.apk)它给了我这个错误:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
原来APK不过是由一个密钥签署(Eclipse的IDE),这个人是不是,我怎么能正确签字与它的Eclipse外原梯形的文件!?
我已经解码的apktool的APK(如原始的源代码丢失了),所以我可以修复的布局XML文件的一些问题。 然后我重建它回来了apktool,当我试图给我的设备上安装它(请使用adb:ADB安装appname.apk)它给了我这个错误:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
原来APK不过是由一个密钥签署(Eclipse的IDE),这个人是不是,我怎么能正确签字与它的Eclipse外原梯形的文件!?
创建使用密钥
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
然后使用签署apk:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
点击这里获取更多信息
使用此工具(使用从谷歌新apksigner):
https://github.com/patrickfav/uber-apk-signer
免责声明:IM开发商:)
你需要一次生成一个密钥存储并使用它来登录你的unsigned
的apk。 使用keytool
由JDK提供的发现%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign
这是由Android SDK中提供的工具中找到的如%ANDROID_HOME%/sdk/build-tools/24.0.2/
是一个强制性的优化步骤,如果你要上传的APK Play商店。
zipalign -p 4 my.apk my-aligned.apk
注意:使用旧时jarsigner
你需要的zipalign 在签字后 。 当使用新apksigner
方法你做之前签署(混乱,我知道)。 apksigner之前调用的zipalign工作得很好 ,因为apksigner保留APK调整和压缩(不同的jarsigner)。
您可以验证与定位
zipalign -c 4 my-aligned.apk
使用jarsigner
其中,像密钥工具自带的JDK分布在找到%JAVA_HOME%/bin/
和使用它像这样:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
并且可以进行验证
jarsigner -verify -verbose my_application.apk
的Android 7.0引入了APK签名方案v2之后,提供更快的应用程序安装的时间和更多的保护,防止擅自改变APK文件(见一个新的应用程序签名方案在这里和这里了解详细信息)。 因此,谷歌实施了所谓的自己的APK签名apksigner
(废话!)脚本文件可以在找到%ANDROID_HOME%/sdk/build-tools/24.0.3/
(该.jar是在/lib
的子文件夹)。 使用这样的
apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name
并且可以进行验证
apksigner verify my-app.apk
的官方文档可以在这里找到。
最快的方法是用调试密钥库签署:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore app.apk androiddebugkey -storepass android
或在Windows上:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore %USERPROFILE%/.android/debug.keystore test.apk androiddebugkey -storepass android
您可以使用的jarsigner签署APK的。 你不必与原来的密钥库签署,只是产生一个新的。 阅读上的细节: http://developer.android.com/guide/publishing/app-signing.html
对于那些你不希望谁创建一个bat文件编辑每一个项目,或不想记得的keytools和的jarsigner程序相关联的所有命令,只想把它在一个过程中使用这个程序来完成:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
我内置的,因为我受够了不必键入的所有文件位置每一次的漫长过程。
这个程序可以节省您的配置,这样下次启动它的时候,你只需要点击生成一个会为您处理。 而已。
没有安装必需的,它是完全便携和在同一文件夹保存在一个CSV它的配置。
更新答案
检查https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
老答案
检查APK签名者一个很好的方式签署您的应用程序