*[雑記] apk(Android Application Package)の署名関連メモ

windowsでapkの署名をするのに手こずったので作業メモ
参考にしたのはこちら
qiita.com

前提としてjavaAndroid Studioがインストールされていること
https://www.java.com/ja/download/
https://developer.android.com/studio
プログラムの実行は必要に応じパス指定するか環境変数pathに追加すること

apkファイル"sample.apk"の展開 ※カレントフォルダにtmpを作成しそこに展開

apktool d "sample.apk" -o tmp

tmpからapkファイルをリビルド

apktool b tmp

W: invalid resource directory name:でエラーになる場合は--use-aapt2オプションを使う
※エラーの理由とかよくわからなかったorz

apktool --use-aapt2 b tmp

署名に必要なキーストア"nakapon.keystore"を作成する
※alias よくわからなかったのでkeystore_aliasのまま

keytool -genkeypair -v -keystore nakapon.keystore -alias keystore_alias -keyalg RSA -keysize 2048 -validity 10000

作成はできるがpkcs12にしろと警告メッセージが出るので変換
※多分最初からpkcs12を指定すれば良いだけだと思う

keytool -importkeystore -srckeystore nakapon.keystore -destkeystore nakapon.keystore -deststoretype pkcs12

zipalignで署名前にアライメント調整 "sample.apk" -> "sample aligned.apk"
※サイトによっては署名後に行うよう解説しているところもあるがmicrosoftのサイトでは前

zipalign -v -p 4 "sample.apk" "sample aligned.apk"

apksignerで署名 "sample aligned.apk" -> "sample signed.apk"

apksigner sign --ks nakapon.keystore --ks-key-alias keystore_alias --out "sample signed.apk" "sample aligned.apk"

署名の確認

apksigner verify "sample signed.apk"