Android用のコンパイル

注意

たいていの場合、デプロイヤーとエクスポートテンプレートはビルトインのもので十分です。Android APKを手動でコンパイルするのは、デプロイヤーのためにカスタムビルドやカスタムパッケージを用意する場合がほとんどです。

また、カスタムのエクスポート テンプレートを作成するときでも、チュートリアルAndroidへのエクスポートのステップを追う必要があります。

必要条件

Windows、Linux、またはmacOSでコンパイルするには、次のことが必要です:

  • Python 2.7以上 あるいは Python 3.5以上
  • SCons ビルドシステム
  • Android SDK (コマンドライン ツールで十分です)
    • 必要なSDKのコンポーネントは、Gradleにより自動的にインストールされます (NDKを除く)
  • Android NDK r17以降
  • Gradle(欠落している場合は自動的にダウンロードされ、インストールされます)
  • JDK 8 (OpenJDK あるいは Oracle JDK のどちらか)
    • JDK 9以降は、現在はまだサポートされていません
    • ビルドされたものが ojdkbuild にてダウンロードできます

参考

Godotにおける基本的なSconsの使い方については、ビルドシステムの説明を参照してください。

ビルドシステムのセットアップ

環境変数 ANDROID_HOME として、Android SDKの場所を指定してください。もしAndroidコマンドライン ツールをダウンロードしたなら、ZIPアーカイブを解凍した中身のあるフォルダを指定します。そのあと、gradlew は必要なSDKコンポーネントをこのフォルダにインストールします。ただし、Gradleでダウンロードする前に、SDKコンポーネントのライセンスに同意する必要があります。これは下記のコマンドをSDKディレクトリのルートで実行し、出てきたプロンプトのすべてに y で答えれば完了します。

tools/bin/sdkmanager --licenses

環境変数 ANDROID_NDK_ROOT をAndroid NDKの場所に設定します。ひょっとしたら、特にカスタムのAndroidモジュールを使用しているときは、変数ANDROID_NDK_HOME も同じパスに設定する必要があるかもしれません。この変数でNDKの場所を確認するGradleプラグインもいくつかあるためです。

To set those environment variables on Windows, press Windows + R, type "control system", then click on Advanced system settings in the left pane, then click on Environment variables on the window that appears.

LinuxやmacOSで環境変数を設定するには、export ANDROID_HOME=/path/to/android-sdk および export ANDROID_NDK_ROOT=/path/to/android-ndk を使用し、 /path/to/android-sdk/path/to/android-ndk はそれぞれSDKとNDKのルート ディレクトリを指定します。

エクスポートテンプレートのビルド

Godotには、Android用の2つのエクスポートテンプレートが必要です。最適化された "release" テンプレート(android_release.apk)とデバッグテンプレート (android_debug.apk)です。 Googleは2019年8月からすべてのAPKにARMv8(64ビット)ライブラリを含めることを要求するため、以下のコマンドはARMv7およびARMv8ライブラリの両方を含むAPKを構築します。

標準エクスポートテンプレートのコンパイルは、SConsを次の引数で呼び出して実行されます:

  • リリーステンプレート(Debugging Enabled をオフにしてエクスポートするときに使用)
scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

得られたAPKは bin/android_release.apk にあります。

  • デバッグテンプレート(Debugging Enabled をオンにしてエクスポートするときに使用)
scons platform=android target=release_debug android_arch=armv7
scons platform=android target=release_debug android_arch=arm64v8
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

得られたAPKは bin/android_debug.apk にあります。

x86デバイスのサポートの追加

x86デバイスのサポートも含める場合は、GradleでAPKをビルドする前に、android_arch=x86 引数を指定してSConsコマンドを3回実行します。たとえば、リリーステンプレートの場合:

scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
scons platform=android target=release android_arch=x86
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

これにより、すべてのプラットフォームで機能するファットバイナリが作成されます。エクスポートされたプロジェクトの最終的なAPKサイズは、エクスポート時にサポートすることを選択したプラットフォームによって異なります。つまり、未使用のプラットフォームはAPKから削除されます。

エクスポートテンプレートのクリーニング

次のコマンドを使用して、生成されたエクスポートテンプレートを削除できます:

cd platform/android/java
# On Windows
.\gradlew cleanGodotTemplates
# On Linux and macOS
./gradlew cleanGodotTemplates

エクスポートテンプレートの使用

Godotには、エディタと同じバージョン/コミットに対してコンパイルされたAPKのリリースとデバッグが必要です。エディタに公式のバイナリを使用している場合は、必ず一致するエクスポートテンプレートをインストールするか、同じバージョンから独自のテンプレートをビルドしてください。

ゲームをエクスポートするとき、GodotはAPKを開き、内部のいくつかを変更してファイルを追加します。

テンプレートのインストール

新しくコンパイルされたテンプレート(android_debug.apk および android_release.apk) は、それぞれの名前でGodotのテンプレートフォルダにコピーする必要があります。テンプレートフォルダは次の場所にあります:

  • Windows: %APPDATA%\Godot\templates\<version>\
  • Linux: $HOME/.local/share/godot/templates/<version>/
  • macOS: $HOME/Library/Application Support/Godot/templates/<version>/

<version> `` の形式は ``major.minor[.patch].status で、Godotソースリポジトリの version.py の値を使用します(例: 3.0.5.stable または 3.1.dev)。また、エクスポートテンプレートの隣にある version.txt ファイルにこの同じバージョン文字列を書き込む必要があります。

ただし、カスタムモジュールまたはカスタムC++コードを記述している場合は、代わりにここでカスタムエクスポートテンプレートとしてAPKを構成することをお勧めします:

../../_images/andtemplates.png

コピーする必要もなく、Godotソースフォルダの bin\ ディレクトリで結果のファイルを参照するだけで、次回ビルド時にカスタム テンプレートが自動的に参照されます。

トラブルシューティング

アプリケーションがインストールされていません

Androidは、アプリケーションが正しくインストールされていないことを訴えます。その場合:

  • デバッグ キーストアが正しく生成されていることを確認します。
  • jarsigner実行可能ファイルがJDK 8からのものであることを確認します。

それでも失敗する場合は、コマンドラインを開き、`logcat <https://developer.android.com/studio/command-line/logcat>`_を実行します。

adb logcat

次に、アプリケーションのインストール中に出力を確認します。エラーメッセージが表示されます。理解できない場合は支援を求めてください。

アプリケーションは直ちに終了します

アプリケーションは実行されてもすぐに終了する場合は、次のいずれかの理由が考えられます:

  • エディタのバージョンと一致するエクスポートテンプレートを使用してください。 新しいGodotバージョンを使用する場合は、テンプレートも更新する必要があります
  • libgodot_android.solibs/<android_arch>/ にありません。ここで <android_arch> はデバイスのアーキテクチャです。
  • デバイスのアーキテクチャが、エクスポートされたものと一致しません。テンプレートがそのデバイスのアーキテクチャ用に構築されていること、およびエクスポート設定にそのアーキテクチャのサポートが含まれていることを確認してください。

いずれの場合も、adb logcat にはエラーの原因も表示されます。