作成した Android 用アプリをスマートフォンなどの実機でデバッグするためには、 debug.keystore というデバッグ用の証明書(署名)のファイルを作る必要があります。
今回は、「Godot Engine 4」で作ったアプリを Android 用にエクスポートするために、公式ガイド「Exporting for Android」に書いてある keytool のコマンドを使って debug.keystore ファイルを作成する手順と、配置場所について紹介します。
※ Android Studio のバージョンは Hedgehog | 2023.1.1 Patch 2 です。
debug.keystore はデバッグ証明書
debug.keystore は Android OS で Debug 版のアプリを実行するために必要な証明書(署名)です。
debug.keystore はデバッグ用であり、GooglePlay などの多くのアプリストアではその証明書による一般公開は許可していません。
Sign your debug build
When running or debugging your project from the IDE, Android Studio automatically signs your app with a debug certificate generated by the Android SDK tools.
The first time you run or debug your project in Android Studio, the IDE automatically creates the debug keystore and certificate in
$HOME/.android/debug.keystore
, and sets the keystore and key passwords.Because the debug certificate is created by the build tools and is insecure by design, most app stores (including the Google Play Store) do not accept apps signed with a debug certificate for publishing.
A signing configuration is an object consisting of all of the necessary information to sign your app, including the keystore location, keystore password, key name, and key password.
デバッグビルドに署名する IDE からプロジェクトを実行またはデバッグする場合、Android Studio は、Android SDK ツールによって生成されたデバッグ証明書を使用してアプリに自動的に署名します。
Android Studio でプロジェクトを初めて実行またはデバッグすると、IDE は $HOME/.android/debug.keystore にデバッグ キーストアと証明書を自動的に作成し、キーストアとキーのパスワードを設定します。
デバッグ証明書はビルド ツールによって作成され、設計上安全ではないため、ほとんどのアプリ ストア (Google Play ストアを含む) は、デバッグ証明書で署名されたアプリの公開を受け入れません。
署名構成は、キーストアの場所、キーストアのパスワード、キー名、キーのパスワードなど、アプリに署名するために必要なすべての情報で構成されるオブジェクトです。
Sign your app | Android Studio | Android Developers
debug.keystore の有無の確認
すでに Android 用アプリを実機でデバッグしたことがある PC の場合は
C:\Users\<user>\.android\
※ユーザーフォルダのドライブを変更している場合は別のドライブの同様のフォルダパスにあります。
にインストールされている可能性があります。
Android needs a debug keystore file to install to devices and distribute non-release APKs. If you have used the SDK before and have built projects, ant or eclipse probably generated one for you (in the
~/.android
directory on Linux and macOS, in theC:\Users\<user>\.android\
directory on Windows).Android には、デバイスにインストールし、リリースされていない APK を配布するためにデバッグ キーストア ファイルが必要です。以前に SDK を使用したことがあり、プロジェクトをビルドしたことがある場合は、ant または eclipse によっておそらく SDK が生成されます
Exporting for Android — Godot Engine (stable) documentation in English と Google 翻訳
debug.keystore の作成
debug.keystore がない場合は、JDK の keytool で作成します。
keytool が含まれている Open JDK 17 のインストールについては、以下の記事を参照してください。
※他の JDK のバージョンでも keytool は使用できますが、今回は Open JDK 17 の keytool を用います。
keytool とは
keytool コマンドはキーと証明書を管理するユーティリティで、デフォルトではファイル形式で実装され、非公開鍵(秘密鍵)をパスワードで保護します。
keytoolコマンド
keytool
コマンドは、キーと証明書を管理するためのユーティリティです。
keytool は、鍵と証明書を「キーストア」に格納します。デフォルトのキーストアの実装は、キーストアをファイルとして実装しています。キーストアは、非公開鍵をパスワードで保護します。
keytool – 鍵と証明書の管理ツール
Android で用いる際は、セキュリティ上の理由でアプリケーションに署名するために用います。
キーストアは、秘密鍵と公開鍵証明書を含むバイナリファイルです。Android は、セキュリティ上の理由から、キーストア内の鍵を使用してアプリケーションに署名します。
Android キーストア – Unity マニュアル
keytool ユーティリティのコマンド・オプション
「Godot Engine 4」で作成したアプリを Android 用にエクスポートするための公式ガイド「Exporting for Android — Godot Engine (stable) documentation in English」によると以下のコマンドを実行すると debug.keystore が作成できます。
keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname “CN=Android Debug,O=Android,C=US” -validity 9999 -deststoretype pkcs12
Exporting for Android — Godot Engine (stable) documentation in English
この引用で使われているオプションについて調べて、どのように動作するか確認してから keytool コマンドを実行します。
※以下の各コマンド・オプションの説明では「keytoolコマンド」を参照しています。
-keyalg RSA
次に紹介する -genkeypair コマンドのオプションです。
キー・ペアの生成に使用するアルゴリズムを指定します。
今回は RSA のアルゴリズムを用いてキー・ペアを生成します。
RSA暗号(RSAあんごう)とは、桁数が大きい合成数の素因数分解が現実的な時間内で困難であると信じられていることを安全性の根拠とした公開鍵暗号の一つである。
RSA暗号 – Wikipedia
-genkeypair
キー・ペアを生成する keytool ユーティリティのコマンドです。
他は、このコマンドに指定するオプションです。
キー・ペアは、公開鍵暗号方式の公開鍵と秘密鍵のセットです。
鍵ペア(key pair)とは、公開鍵暗号方式で用いる2つの鍵のセット。一方は誰に知られても良い「公開鍵」、もう一方は自分の手元で誰にも知られないよう秘匿する「秘密鍵」で、対になるこの2つを合わせて暗号化や電子署名を行う。
鍵ペア(キーペア)とは – 意味をわかりやすく – IT用語辞典 e-Words
-alias androiddebugkey
処理するエントリの別名です。
エントリは生成したキー・ペアの格納先に用いられます。
今回は androiddebugkey キーストア・エントリに生成したキー・ペアが格納されます。
キーストアについては後述の -keystore オプションで指定します。
-keypass android
生成されたキー・ペアの一方である秘密鍵を保護するパスワードを 6 文字以上で設定します。
今回はデバッグ用だからか、固定のパスワード android が公式ガイドで用いられているので、それを採用します。
-keystore debug.keystore
今回生成するエントリを格納するキーストアの名前を指定します。
今回は debug.keystore という名前のキーストアの前述の androiddebugkey エントリに生成したキー・ペアを格納します。
-storepass android
キーストアのパスワードを指定します。
今回はデバッグ用だからか、公式ガイドに書かれた固定のパスワード android を設定します。
前述の debug.keystore キーストアに対応するパスワードです。
-dname “CN=Android Debug,O=Android,C=US”
前述の -alias オプションで指定した androiddebugkey エントリに関連付ける「X.500識別名」を指定します。項目ごとにカンマ区切りで指定します。
詳細はよくわかりませんが、今回は「共通名」に Android Debug、「組織名」に Android、「国」に US と設定します。
#国については US で良いのか疑問でしたが、他サイト様「Android: Debug Keystore と Release Keystore をコマンドから生成する #Android – Qiita」でも US を指定していたので、デバッグ用だから US で良いのかなと思いました。
X.500 識別名 – IBM Documentation
- C 国
- CN 共通名
- O 組織名
-validity 9999
有効日数を指定します。
今回は 9,999 日を有効日数に指定します。
-deststoretype pkcs12
今回行う -genkeypair コマンドには含まれないオプションです。無視されるオプションかもしれません。
※ Open JDK 17 の仕様では使われているのかもしれません。
-deststoretype は -importkeystore コマンドのオプションで、宛先キーストアのタイプを指定します。
keytool コマンドの実行結果
コマンドプロンプトを起動します。
Windows 10 の場合は cmd と左下の検索ボックスに入力すると検索結果から起動できます。
または、スタートメニューの System Tools フォルダ内のコマンドプロンプトを起動します。
コマンドプロンプトを起動したら先ほどのコマンドを入力して Enter キーを押します。
#コピー (Ctrl +C) を貼り付け (Ctrl + V) した後 Enter キーを押すと簡単です。
keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname “CN=Android Debug,O=Android,C=US” -validity 9999 -deststoretype pkcs12
Exporting for Android — Godot Engine (stable) documentation in English
コマンドを実行すると、生成された内容についてのメッセージが表示されます。
これでコマンドプロンプトでコマンドを実行した C:\Users\XXX のフォルダの直下に debug.keystore ファイルが作成されました。
作成された debug.keystore ファイルは公式ガイドに従って、C:\Users\<username>\.android フォルダに移動しました。
This will create a debug.keystore file in your current directory. You should move it to a memorable location such as %USERPROFILE%.android\, because you will need its location in a later step. For more information on keytool usage, see this Q&A article.
これにより、現在のディレクトリに debug.keystore ファイルが作成されます。 後の手順でその場所が必要になるため、%USERPROFILE%.android\ などの覚えやすい場所に移動する必要があります。 keytool の使用方法の詳細については、この Q&A 記事を参照してください。
Exporting for Android — Godot Engine (stable) documentation in English
.android フォルダについて
.android フォルダは Android Studio の SDK Manager で SDK Platform やツールをインストールした際に作られるようです。
参照:アトリエ・エクレア:BLOG Android SDK のインストール手順
筆者は以前に Android Studio を使用していたときに .android フォルダが作成され、今回 SDK Platform やツールをインストールしたことで .android フォルダ内の一部のフォルダの日付が更新されました。
Android Studio で古いバージョンの SDK Platform やツールをインストールする手順については、前回の2つの記事を参照してください。
まとめ
今回は、「Godot Engine 4」で作ったアプリを Android 用にエクスポートするために、公式ガイド「Exporting for Android」のコマンドを使って debug.keystore ファイルを作成する手順と、配置場所について紹介しました。
keytool のコマンドやオプションについても実行する内容に沿って紹介しました。
.android フォルダは Android Studio の SDK Manager で SDK Platform やツールをインストールした際に更新されることもわかりました。
参照サイト Thank You!
- Exporting for Android — Godot Engine (stable) documentation in English
- Godot Engine – Free and open source 2D and 3D game engine
- Sign your app | Android Studio | Android Developers
- Android キーストア – Unity マニュアル
- keytoolコマンド
- keytool – 鍵と証明書の管理ツール
- RSA暗号 – Wikipedia
- 鍵ペア(キーペア)とは – 意味をわかりやすく – IT用語辞典 e-Words
- X.500 識別名 – IBM Documentation
- アトリエ・エクレア:BLOG Android SDK のインストール手順
- Android: Debug Keystore と Release Keystore をコマンドから生成する #Android – Qiita
記事一覧 → Compota-Soft-Press
コメント