元ドキュメント: APK Manual Signing Guide
APK手動署名ガイド
概要
ハードニング処理後のAPKファイルは再署名が必要です。CLI版ハードニングツールでは設定ファイル内に署名情報を記述することで自動署名が可能ですが、署名情報を記入しなかった場合や、別途手動で署名したい場合は、本ガイドに従って手動署名を行ってください。
署名ツール
Android SDKに付属するapksignerツールを使用して署名を行います。
apksigner の場所
Android SDK/build-tools/<version>/apksigner署名手順
ステップ1:キーストアの準備
署名に使用するキーストアファイル(.jks または .keystore)を準備します。既存のキーストアがない場合は、keytoolコマンドで新規作成できます:
bash
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-aliasステップ2:APKの署名
apksignerを使用してハードニング済みAPKに署名します:
bash
apksigner sign --ks my-release-key.jks --ks-key-alias my-alias --out signed-app.apk unsigned-app.apkステップ3:署名の検証
署名が正しく適用されたことを確認します:
bash
apksigner verify --verbose signed-app.apk署名スキーム
| スキーム | 説明 | 対象Android |
|---|---|---|
| V1(JAR署名) | 従来の署名方式 | 全バージョン |
| V2(APK署名スキーム) | Android 7.0以降で導入 | Android 7.0+ |
| V3(APK署名スキーム v3) | キーローテーション対応 | Android 9.0+ |
注意事項
- ハードニング前後で同じ署名キーを使用してください
- V1/V2/V3の署名設定はハードニング前のAPKと同一に保つことを推奨します
- AABパッケージの場合、一般的にV1署名のみ使用します
- 署名に失敗した場合は、キーストアのパスワードとエイリアスが正しいことを確認してください
jarsignerでの署名(代替方法)
JDKに付属するjarsignerでも署名可能です:
bash
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore my-release-key.jks unsigned-app.apk my-alias署名後、zipalignで最適化します:
bash
zipalign -v 4 signed-app.apk aligned-app.apk