この記事では、Google Playに作成したアプリを公開するために署名付きapkファイルを作る方法について紹介します。
署名(キーストアファイル)の作成
署名付きAPKファイルを作るには、まず署名(キーストアファイル)を作っておく必要があります。
その手順は以下の通りです。
①コマンドプロンプトを開きます。
②プロジェクトフォルダに移動します。
③以下のコマンドを入力してEnterキーを押します。
書式
keytool -genkey -v -keystore 任意のファイル名.keystore -alias 任意のエイリアス名 -keyalg RSA -keysize 2048 -validity 署名有効日数
例
keytool -genkey -v -keystore test.keystore -alias test -keyalg RSA -keysize 2048 -validity 10000
③キーストアのパスワードを入力します。(任意)
入力したパスワードは記録しておきます
④新規パスワードにも同じパスワードを入力してEnterキーを押します。
⑤「姓名」に任意の名前を入力します。
⑥最後の[いいえ]: で「y」を入力してEnterキーを押します。
⑦先程のパスワードを入力します。
⑧プロジェクトフォルダ直下にキーストアファイルが作成されます。
(test.keystoreなど)
APKファイルの作成
続いて、APKファイルの作成を行います。
①コマンドプロンプトを開きます。
②プロジェクトフォルダに移動します。
③以下のコマンドを入力してEnterキーを押します。
書式
cordova build --release
④以下のフォルダ内にAPKファイル(android-release-unsigned.apk)が作成されていれば成功です。
「platforms」→「android」→「build」→「outputs」→「apk」
署名をAPKファイルに書き込む
署名をAPKファイルに書き込むことで、「署名付きAPKファイル」を作ることができます。
その手順は以下の通りです。
①これまでに作成した「android-release-unsigned.apk」をプロジェクトフォルダ直下(※キーストアファイルと同じディレクトリ)にコピーします。
②コマンドプロンプトでプロジェクトフォルダに移動し、以下のコマンドを実行します。
書式
jarsigner -verbose -keystore <鍵ファイル名> <apkファイル> <エイリアス名>
例
jarsigner -verbose -keystore test.keystore android-release-unsigned.apk test
③警告等が出ずに「~jarは署名されました。」と表示されたら成功です。
あとは、「署名付きAPKファイルを最適化」することで、Google Playで公開できるようになります。
エラー対策
署名の書き込みを実行して以下の警告が出ることがあります。
警告: -tsaまたは-tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。タイムスタンプがないと、署名者証明書の>有効期限(2047-12-15)後または将来の失効日後に、ユーザーはこのjarを検証できない可能性があります。
その場合は、コマンドを以下のように変更して再度実行してみてください。
修正後のコマンド
jarsigner -verbose -tsa http://timestamp.digicert.com -keystore <鍵ファイル名> <apkファイル> <エイリアス名>
※元のコマンドに「-tsa http://timestamp.digicert.com」を追加
– | 関連記事 |
---|---|
① | 【Cordova入門】Android向けハイブリッドアプリ開発 |
② | Javascript入門 サンプル集 |
③ | Java入門 |
④ | Node.js入門 |
コメント
初めてご連絡させていただきます。
こちらでご紹介されている手法と【Cordova】APKファイルの最適化(zipalign) を行い
google play console に署名済、最適化済の.apkをアップロードしようと試みましたが
以下のエラーメッセージ:
MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET: Target SDK version 30 requires a minimum of signature scheme v2; the APK is not signed with this or a later signature scheme
が表示され、アップロードできませんでした。
翻訳しますと「signature scheme v2」以上で署名して欲しいという旨でしたが
こちら自分のandroid studioもしくはcordovaの設定に不備がございますでしょうか。
ご迷惑おかけ致しますが、ご教授いただけますと幸いです。
よろしくお願いいたします。
コメントありがとうございます。
Cordovaは何年も触っていないので確実なことは分かりませんが、
エラー文を見るとアプリをビルドするときのAndroid SDKのバージョンが古いことが原因かと思います。
android studioでバージョン30以上のAndroid SDKをインストールし、Cordovaでバージョン30以上のAndroid SDKでビルドするよう設定する必要があると思います。