やること
・apkファイルに署名をする方法を2つ
・keystoreファイルの確認方法
・apkファイルの確認方法
* Macでやってます。
(Windowsでも多分、手順は一緒です)
apkファイルに署名することで何が嬉しいか
・ストアに公開しないプリインストール用にアプリを作る(端末内で初期から入ってるアプリとか)
・身内だけにアプリを配る
など
署名する方法
署名する方法は2つ
1 コマンドから作成する
2 Android Studioから作成する(推奨)
コマンドから作成したkeystoreファイルで署名する
前提条件、Android Studioからapkファイルをリリースビルドしておく
1) ターミナルからコマンドを入力してkeystoreファイルを作成する
keytool -genkey -v -keystore keystoreファイル名 -alias エイリアス名 -keyalg RSA -validity 有効期限(日数 25年以上推奨→*50年推奨)
keytool -genkey -v -keystore test.keystore -alias TEST -keyalg RSA -validity 10000
2) 作成したkeystoreファイルでリリースビルドしたapkファイルに署名する
jarsigner -verbose -keystore keystoreファイル apkファイル キーストアのエイリアス名
jarsigner -verbose -keystore test.keystore app-release-unsigned.apk TEST
Android Studioから署名付きapkファイルを作成する
1) Build>Generate Signed APKz
2) Create new を選択
*既に作成済みのkeystoreファイルがある場合は、「choose existing」からファイル選択
3) 適宜入力。上のストアパスと下のキーパスは必ず控えて無くさないようにすること
4) Nextをクリック
5) 「V1」と「V2」にチェックをつけて、Finish
6) 作成完了すると、以下メッセージが表示される
locateをクリックするとapkファイルのフォルダが開かれる
(もしくは、app/releaseの中)
- もし、作成に失敗した場合、2からやり直してみる。
既にkeystoreファイルは作成されているので選択するだけ。
私の場合、1回目はapkファイルの作成に失敗するケースが多く、2回目に作成成功するパターンが多かったです。
keystoreファイルの確認方法
keytool -v -list -keystore keystoreファイル名 -alias エイリアス名
keytool -v -list -keystore test.keystore -alias TEST
apkファイルに署名できたかどうかの確認方法
jarsigner -verify -verbose -certs app-release-signed.apk
jarsigner -verify -verbose -certs app-release-signed.apk
証明書の公開鍵を確認する方法
1) APK内の証明書を抽出
jar xvf app-release-signed.apk META-INF
2) opensslを使って確認
openssl pkcs7 -inform DER -in META-INF/CERT.RSA -noout -print_certs -text