如何注册的已编译的.apk如何注册的已编译的.apk(How to Sign an Already

2019-05-17 10:03发布

我已经解码的apktool的APK(如原始的源代码丢失了),所以我可以修复的布局XML文件的一些问题。 然后我重建它回来了apktool,当我试图给我的设备上安装它(请使用adb:ADB安装appname.apk)它给了我这个错误:

[INSTALL_PARSE_FAILED_NO_CERTIFICATES]

原来APK不过是由一个密钥签署(Eclipse的IDE),这个人是不是,我怎么能正确签字与它的Eclipse外原梯形的文件!?

Answer 1:

创建使用密钥

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

点击这里获取更多信息



Answer 2:

自动化的过程:

使用此工具(使用从谷歌新apksigner):

https://github.com/patrickfav/uber-apk-signer

免责声明:IM开发商:)

手工工艺:

第1步:生成密钥库(仅一次)

你需要一次生成一个密钥存储并使用它来登录你的unsigned的apk。 使用keytool 由JDK提供的发现%JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

步骤2或4:的zipalign

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

步骤3:登入&验证

使用编译工具24.0.2及以上

使用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

使用编译工具24.0.3及更高版本

的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

的官方文档可以在这里找到。



Answer 3:

最快的方法是用调试密钥库签署:

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


Answer 4:

您可以使用的jarsigner签署APK的。 你不必与原来的密钥库签署,只是产生一个新的。 阅读上的细节: http://developer.android.com/guide/publishing/app-signing.html



Answer 5:

对于那些你不希望谁创建一个bat文件编辑每一个项目,或不想记得的keytools和的jarsigner程序相关联的所有命令,只想把它在一个过程中使用这个程序来完成:

http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx

我内置的,因为我受够了不必键入的所有文件位置每一次的漫长过程。

这个程序可以节省您的配置,这样下次启动它的时候,你只需要点击生成一个会为您处理。 而已。

没有安装必需的,它是完全便携和在同一文件夹保存在一个CSV它的配置。



Answer 6:

更新答案

检查https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/

老答案

检查APK签名者一个很好的方式签署您的应用程序



文章来源: How to Sign an Already Compiled Apk