[英]How to Sign an Already Compiled Apk
我已經用 apktool 解碼了一個 APK(因為原始源代碼丟失了)所以我可以解決布局 xml 文件的一些問題。 然后我用 apktool 重新構建了它,當我嘗試在我的設備上安裝它時(使用 adb: adb install appname.apk),它給了我這個錯誤:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
然而,原始 apk 是由密鑰庫(在 Eclipse IDE 上)簽名的,這個不是,我如何在 Eclipse 之外使用它的原始 keystone 文件正確簽名!?
使用創建密鑰
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
使用此工具(使用來自 Google 的新 apksigner):
https://github.com/patrickfav/uber-apk-signer
免責聲明:我是開發人員:)
您需要生成一次密鑰庫並使用它來簽署您unsigned
apk。 使用%JAVA_HOME%/bin/
的 JDK 提供的keytool
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
,它與 keytool 一樣,隨%JAVA_HOME%/bin/
的 JDK 發行版一起提供,並像這樣使用它:
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 文件進行未經授權的更改(有關更多詳細信息,請參閱此處和此處)。 因此,Google 實現了自己的 apk 簽名器apksigner
( 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
更新答案
檢查https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
舊答案
檢查apk-signer一種簽署應用程序的好方法
對於那些不想為每個項目創建一個 bat 文件來編輯的人,或者不想記住與 keytools 和 jarsigner 程序相關的所有命令而只想在一個過程中完成它的人,請使用這個程序:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
我構建它是因為我厭倦了每次都必須鍵入所有文件位置的冗長過程。
這個程序可以保存你的配置,所以下次你啟動它時,你只需要點擊生成它就會為你處理它。 而已。
無需安裝,它完全可移植,並將其配置保存在同一文件夾中的 CSV 文件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.