This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Android デバイスでは、自作のアプリを自由に実行できます。ゲームをビルドして Android デバイスにコピーするのは非常に簡単です。このマニュアルでは、Android 向けにゲームのバンドル(bundle)を作成する手順を説明します。開発中は、コンテンツとコードをデバイスに直接ホットリロード(hot reload)できるため、開発用アプリ(development app) でゲームを実行する方法がよく選ばれます。
Android では、すべての APK に、デバイスへのインストールまたは更新の前に証明書でデジタル署名を行う必要があります。Android App Bundle を使用する場合は、Play Console にアップロードする前にアプリバンドルに署名するだけで、残りは Play App Signing が処理します。ただし、Google Play やほかのアプリストアへのアップロード、またはストアを介さない配布のために、アプリに手動で署名することもできます。
Defold エディターまたはコマンドラインツール で Android アプリケーションのバンドルを作成するときに、アプリケーションの署名に使うキーストア(証明書とキーを含みます)とキーストアのパスワードを指定できます。指定しない場合、Defold はデバッグ用キーストアを生成し、アプリケーションバンドルの署名に使用します。
デバッグ用キーストアで署名したアプリケーションは、Google Play に 絶対に アップロードしないでください。必ず自分で作成した専用のキーストアを使用してください。
Defold は Android の署名プロセスにキーストアを使用します。詳細はこのフォーラムの投稿を参照してください。
キーストアは Android Studio を使用して、またはターミナル/コマンドプロンプトから作成できます。
keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125
これにより、キーと証明書を含む mykeystore.keystore という名前のキーストアファイルが作成されます。キーと証明書へのアクセスは、パスワード 5Up3r_53cR3t で保護されます。キーと証明書の有効期間は25年(9125日)です。生成されたキーと証明書は、エイリアス myAlias で識別されます。
キーストアとそのパスワードは、安全な場所に保管してください。自分でアプリケーションに署名して Google Play にアップロードしている場合、キーストアまたはキーストアのパスワードを紛失すると、Google Play 上のアプリケーションを更新する方法がなくなります。Google Play App Signing を使用して Google にアプリケーションの署名を任せると、この問題を回避できます。
エディターを使うと、ゲームのスタンドアロンアプリケーションバンドルを簡単に作成できます。バンドルの作成前に、game.project プロジェクト設定ファイル で、アプリに使用するアイコンやバージョンコードなどを指定できます。
バンドルを作成するには、メニューから Project ▸ Bundle... ▸ Android Application... を選択します。
ランダムなデバッグ用証明書をエディターで自動生成する場合は、Keystore と Keystore password のフィールドを空のままにします。

特定のキーストアでバンドルに署名する場合は、Keystore と Keystore password を指定します。Keystore のファイルの拡張子は .keystore とし、パスワードは拡張子 .txt のテキストファイルに保存する必要があります。キーストア内のキーがキーストア自体とは異なるパスワードを使う場合は、Key password も指定できます。

Defold は APK ファイルと AAB ファイルの両方の作成に対応しています。Bundle Format ドロップダウンから APK または AAB を選択します。
アプリケーションバンドルの設定が完了したら、Create Bundle を押します。続いて、コンピューター上でバンドルを作成する場所を指定するよう求められます。

ゲームのバンドル(bundle)を作成するときは、使用するエンジンの種類を選ぶ必要があります。基本となる選択肢は次の3つです。
これらの異なるバージョンは、ビルドバリアント(Build variants)とも呼ばれます。
Project ▸ Build を選択すると、常にデバッグ版が使用されます。
この種類の実行ファイルには、便利なデバッグ機能がいくつか含まれているため、通常はゲームの開発中に使用します。
print() 関数や、ネイティブ拡張(native extension)で dmLogInfo()、dmLogError() などを使用して記録するログも出力します。これらのログの読み方は、ゲームとシステムのログのマニュアルを参照してください。このバリアントでは、デバッグ機能が無効になっています。ゲームをアプリストアでリリースする準備ができたときや、ほかの方法でプレイヤーに配布する準備ができたときは、この選択肢を選んでください。次の理由から、デバッグ機能を有効にしたままゲームをリリースすることは推奨しません。
ヘッドレス(headless)版の実行ファイルは、グラフィックスの表示もサウンドの再生も行わずに動作します。つまり、CI サーバー上でゲームの単体テストやスモークテストを実行したり、クラウド上のゲームサーバーとして動作させたりすることもできます。
.apk ファイルは、adb ツールでデバイスにコピーするか、Google Play デベロッパーコンソール 経由で Google Play にコピーできます。
adb コマンドラインツールは、Android デバイスとやり取りするための、使いやすく多用途なプログラムです。Mac、Linux、Windows 向けの Android SDK Platform-Tools の一部として、adb をダウンロードしてインストールできます。
Android SDK Platform-Tools を https://developer.android.com/studio/releases/platform-tools からダウンロードします。adb ツールは /platform-tools/ にあります。また、各プラットフォーム向けのパッケージを、それぞれのパッケージマネージャーからインストールすることもできます。
Ubuntu Linux の場合:
$ sudo apt-get install android-tools-adb
Fedora 18/19 の場合:
$ sudo yum install android-tools
macOS(Homebrew)の場合
$ brew cask install android-platform-tools
Android デバイスを USB でコンピューターに接続し、次のコマンドを実行すると、adb が動作することを確認できます。
$ adb devices
List of devices attached
31002535c90ef000 device
デバイスが表示されない場合は、Android デバイスで USB debugging が有効になっていることを確認します。デバイスの Settings を開き、Developer options(または Development)を探します。

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/my_app.apk
Success
エディターの Bundle ダイアログにある「Install on connected device」と「Launch installed app」のチェックボックスを使うと、.apk ファイルをインストールして起動できます。

この機能を使うには、ADB をインストールし、接続したデバイスで USB debugging を有効にする必要があります。エディターが ADB コマンドラインツールのインストール場所を検出できない場合は、Preferences で指定する必要があります。
.aab ファイルは、Google Play デベロッパーコンソール 経由で Google Play にアップロードできます。Android bundletool を使い、.aab ファイルから .apk ファイルを生成してローカルにインストールすることもできます。
Defold エンジンのすべての機能を動作させるには、いくつかの異なる権限が必要です。権限は、game.project プロジェクト設定ファイル で指定した AndroidManifest.xml に定義されています。Android の権限について詳しくは、公式ドキュメント を参照してください。デフォルトのマニフェストでは、次の権限を要求します。
アプリケーションが ネットワークソケット を開き、ネットワークに関する情報にアクセスできるようにします。これらの権限は、インターネットアクセスに必要です。(Android 公式ドキュメント)および(Android 公式ドキュメント)。
PowerManager WakeLocks を使い、プロセッサーがスリープ状態になったり、画面が暗くなったりするのを防げるようにします。この権限は、プッシュ通知の受信中にデバイスがスリープ状態になるのを一時的に防ぐために必要です。(Android 公式ドキュメント)
AndroidX は、メンテナンスが終了した従来の Android Support Library を大幅に改善したものです。AndroidX パッケージは、同等の機能と新しいライブラリを提供することで、Support Library を完全に置き換えます。Asset Portal にある Android 拡張のほとんどは AndroidX に対応しています。AndroidX を使用せず、従来の Android Support Library を使用する場合は、アプリケーションマニフェスト で Use Android Support Lib にチェックを入れると、AndroidX を明示的に無効にできます。

A: はい。game.project ファイルの Android セクションで immersive_mode を設定します。これにより、アプリが画面全体を使用し、画面上のすべてのタッチイベントを取得できます。
A: Android が、新しい証明書を使ってアプリをインストールしようとしていることを検出したためです。デバッグビルドのバンドル(bundle)を作成する際は、各ビルドが一時的な証明書で署名されます。新しいバージョンをインストールする前に、古いアプリをアンインストールします。
$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/Defold examples.apk
Success
A: 同じプロパティタグに異なる値を指定した Android マニフェストのスタブを、2つ以上の拡張(extension)が提供すると、このエラーが発生することがあります。たとえば、Firebase と AdMob でこの問題が発生しています。ビルドエラーは次のように表示されます。
SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.
この問題と回避策の詳細は、Defold に報告された問題 #9453 と Google に報告された問題 #327696048 を参照してください。