Skip to content

元ドキュメント: 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+

注意事項

  1. ハードニング前後で同じ署名キーを使用してください
  2. V1/V2/V3の署名設定はハードニング前のAPKと同一に保つことを推奨します
  3. AABパッケージの場合、一般的にV1署名のみ使用します
  4. 署名に失敗した場合は、キーストアのパスワードとエイリアスが正しいことを確認してください

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

Tencent Cloud プロダクトドキュメント