現在、プライベートキーストアファイルで署名されたapkを取得していますが、別のキーストアファイルでそのapkに署名したいです。どうすればそのapkを辞任できますか?
別のキーストアを使用してapkを再署名できます。
次の手順を実行します:
リリースへの署名:$1.apk -> $1_release.apk"
ステップ1:以前の署名を削除する
.apk
の拡張子を.Zip
に変更します。.apk
に変更しますZip [originalapk]
Zip "$1".apk -d
ステップ2: release.keystoreで署名する:
コマンド:
jarsigner –verbose –keystore [keystorefile] –signedjar [unalignedapk] [originalapk] alias_name
例:
C:\Program Files\Java\jdk1.6.0_43\bin> jarsigner -verbose -keystore release.keystore -signedjar "$1"_unaligned.apk "$1".apk release
ステップ3:整列
コマンド:zipalign -f 4 [unalignedapk] [releaseapk]
例:
C:\Users\Downloads\adt-bundle-windows-x86\adt-bundle-windows-x86\sdk\too ls>zipalign -f 4 "$1"_unaligned.apk "$1"_release.apk
ステップ4:クリーンアップ
コマンド:rm 4 [unalignedapk]
例:rm "$1"_unaligned.apk
追加のコマンドが役立つ場合があります:
keytool -genkey -alias -keystore
keytool -list -keystore
注:
APKに署名するために、JDKを1.7から1.6.0_43アップデートにダウングレードしました。
理由:
JDK 7では、デフォルトの署名アルゴリズムが変更され、APKに署名するときに署名とダイジェストアルゴリズム(-sigalgと-digestalg)を指定する必要があります。
コマンド:
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name
Zip -d xxxx.apk(apkファイル)META-INF/*
jarsigner -verbose -keystore xxxx.keystore(キーストア)-signedjar out_sign.apk(outfile)unsign.apk(unsign apk)xxxxxalias(your alias)
パラメータを追加-digestalg SHA1 -sigalg MD5withRSA
jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore xxxx.keystore(your keystore)-signedjar out_sign.apk(outfile)unsign.apk(unsign apk)xxxxxalias(your alias)
また、非常に使いやすいオープンソースのapk-resignerスクリプトを使用することもできます。
APK-resigner: https://github.com/onbiron/apk-resigner
./signapk.sh calculator.apk ~/.Android/debug.keystore Android androiddebugkey
デバッグキーでAPKに署名する場合も使用できます。
./signapk.sh calculator.apk