【Cordova】署名付きapkファイルの作成

この記事では、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入門

コメント

  1. tanaka より:

    初めてご連絡させていただきます。
    こちらでご紹介されている手法と【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でビルドするよう設定する必要があると思います。