元のソースコードが失われたため、apktoolでAPKをデコードしたため、レイアウトxmlファイルの問題を修正できました。次に、apktoolでバックアップを再構築し、デバイスにインストールしようとしたときに(adb:adb install 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
このツールを使用します(Googleの新しいapksignerを使用します):
https://github.com/patrickfav/uber-apk-signer
免責事項:開発者です:)
キーストアを一度生成し、それを使用してunsigned
apkに署名する必要があります。 keytool
JDKが提供 が%Java_HOME%/bin/
にあります
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign
Android SDKが提供するツール APKをPlayストアにアップロードする場合、%Android_HOME%/sdk/build-tools/24.0.2/
は必須の最適化手順です。
zipalign -p 4 my.apk my-aligned.apk
注:古いjarsigner
を使用する場合、zip調整する必要がありますAFTER signing。新しいapksigner
メソッドを使用する場合は、それを行いますBEFORE signing(わかりにくい)。 appksignerが正常に動作する前にzipalignを呼び出す apksignerはAPKのアライメントと圧縮を保持するため(jarsignerとは異なります)。
verifyとのアライメント
zipalign -c 4 my-aligned.apk
jarsigner
を使用します。これは、keytoolと同様に、 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 Signature Scheme v2が導入されました。これは、アプリのインストール時間を短縮し、APKファイルへの不正な変更に対する保護を強化する新しいアプリ署名スキームです(詳細は here および here を参照してください)詳細)。そのため、Googleは apksigner
というapk署名者 (duh!)を実装しました。スクリプトファイルは%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プログラムに関連するすべてのコマンドを覚えて、1つのプロセスでそれを実行したくない場合は、このプログラムを使用してください。
http://lukealderton.com/projects/programs/Android-apk-signer-aligner.aspx
毎回すべてのファイルの場所を入力しなければならない長いプロセスにうんざりしていたので、私はそれを作りました。
このプログラムは設定を保存できるので、次回起動するときに、Generateを押すだけで処理されます。それでおしまい。
インストールする必要はありません。完全に移植可能で、同じフォルダ内のCSVに構成を保存します。
更新された回答
チェック https://shatter-box.com/knowledgebase/Android-apk-signing-tool-apk-signer/
古い回答
check apk-signer アプリに署名する良い方法