我用apktool解码了一个APK(因为原始源代码丢失了),这样我就可以修复布局xml文件的一些问题。然后我用apktool重建了它,当我试图在我的设备上安装它时(使用adb:adb install appname.apk)它给了我这个错误:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
原始的apk是由keystore签署的(在eclipse IDE上),这个不是,我怎么能在Eclipse之外用它的原始keystone文件正确地签署它呢!?
yrdbyhpb1#
使用创建密钥
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
查看更多信息
qrjkbowd2#
使用此工具(使用Google的新apksigner):https://github.com/patrickfav/uber-apk-signer免责声明:我是开发人员:)
您需要生成一次密钥库并使用它来签署您的unsigned apk。使用%JAVA_HOME%/bin/中的keytoolprovided by the JDK
unsigned
%JAVA_HOME%/bin/
keytool
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalignwhich is a tool provided by the Android SDK发现在例如%ANDROID_HOME%/sdk/build-tools/24.0.2/是一个强制性的优化步骤,如果你想上传apk到Play商店.
zipalign
%ANDROID_HOME%/sdk/build-tools/24.0.2/
zipalign -p 4 my.apk my-aligned.apk
**注意:**当使用旧的jarsigner时,你需要zipalign AFTER 签名。当使用新的apksigner方法时,你需要 BEFORE 签名(令人困惑,我知道)。Invoking zipalign before apksigner works fine因为apksigner保留了APK对齐和压缩(不像jarsigner)。
jarsigner
apksigner
您可以 * 验证 * 与
zipalign -c 4 my-aligned.apk
使用jarsigner,就像在%JAVA_HOME%/bin/中找到的keytool comes with the JDK distribution一样,并像这样使用它:
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文件遭到未经授权的更改(更多细节请看这里和here)。因此,Google实现了他们的own apk signer called apksigner(duh!)脚本文件可以在%ANDROID_HOME%/sdk/build-tools/24.0.3/中找到(.jar在/lib子文件夹中)。
%ANDROID_HOME%/sdk/build-tools/24.0.3/
/lib
apksigner sign --ks-key-alias alias_name --ks my.keystore my-app.apk
apksigner verify my-app.apk
官方文件可以在这里找到。
vuktfyat3#
最快的方法是使用debug keystore进行签名:
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
mrfwxfqh4#
您可以使用jarsigner来签署APK。您不必使用原始密钥库进行签名,只需生成一个新密钥库即可。阅读详细信息:http://developer.android.com/guide/publishing/app-signing.html
pvabu6sv5#
对于那些不想为每个项目创建一个bat文件来编辑的人,或者不想记住与keytools和jarsigner程序相关的所有命令,只想在一个过程中完成它的人,请使用这个程序:http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx我建立它是因为我受够了每次都要输入所有文件位置的冗长过程。这个程序可以保存你的配置,所以下次你启动它的时候,你只需要点击生成,它就会为你处理,就是这样。无需安装,它是完全可移植的,并将其配置保存在同一文件夹中的CSV中。
hfsqlsce6#
更新答复
检查https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
旧答案
检查apk-signer一个很好的方式来签署你的应用程序
6条答案
按热度按时间yrdbyhpb1#
使用创建密钥
然后使用以下命令对apk进行签名:
查看更多信息
qrjkbowd2#
自动化流程:
使用此工具(使用Google的新apksigner):
https://github.com/patrickfav/uber-apk-signer
免责声明:我是开发人员:)
手工流程:
第一步:生成密钥库(仅一次)
您需要生成一次密钥库并使用它来签署您的
unsigned
apk。使用%JAVA_HOME%/bin/
中的keytool
provided by the JDK第二步或第四步:齐帕林
zipalign
which is a tool provided by the Android SDK发现在例如%ANDROID_HOME%/sdk/build-tools/24.0.2/
是一个强制性的优化步骤,如果你想上传apk到Play商店.**注意:**当使用旧的
jarsigner
时,你需要zipalign AFTER 签名。当使用新的apksigner
方法时,你需要 BEFORE 签名(令人困惑,我知道)。Invoking zipalign before apksigner works fine因为apksigner保留了APK对齐和压缩(不像jarsigner)。您可以 * 验证 * 与
第三步:签名验证
使用build-tools 24.0.2及更早版本
使用
jarsigner
,就像在%JAVA_HOME%/bin/
中找到的keytool comes with the JDK distribution一样,并像这样使用它:并可通过以下方式进行验证
使用build-tools 24.0.3及更新版本
Android 7.0引入了APK签名方案v2,这是一种全新的应用签名方案,可加快应用安装速度,并提供更多保护,防止APK文件遭到未经授权的更改(更多细节请看这里和here)。因此,Google实现了他们的own apk signer called
apksigner
(duh!)脚本文件可以在%ANDROID_HOME%/sdk/build-tools/24.0.3/
中找到(.jar在/lib
子文件夹中)。并可通过以下方式进行验证
官方文件可以在这里找到。
vuktfyat3#
最快的方法是使用debug keystore进行签名:
或在Windows上:
mrfwxfqh4#
您可以使用jarsigner来签署APK。您不必使用原始密钥库进行签名,只需生成一个新密钥库即可。阅读详细信息:http://developer.android.com/guide/publishing/app-signing.html
pvabu6sv5#
对于那些不想为每个项目创建一个bat文件来编辑的人,或者不想记住与keytools和jarsigner程序相关的所有命令,只想在一个过程中完成它的人,请使用这个程序:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
我建立它是因为我受够了每次都要输入所有文件位置的冗长过程。
这个程序可以保存你的配置,所以下次你启动它的时候,你只需要点击生成,它就会为你处理,就是这样。
无需安装,它是完全可移植的,并将其配置保存在同一文件夹中的CSV中。
hfsqlsce6#
更新答复
检查https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
旧答案
检查apk-signer一个很好的方式来签署你的应用程序