Unity プロジェクトから ADT 形式の Android プロジェクトを生成し、Gradle を使ってそれをビルドする
C# Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Assets
ProjectSettings
gradle
.gitignore
LICENSE
README.md
make-gradle-buildable.bash

README.md

Unity プロジェクトから ADT 形式の Android プロジェクトを生成し、Gradle を使ってそれをビルドする

これによって解決できること

Unity に設定項目のない Android ビルド時のパラメーターが指定できるようになる。

  • compile SDK version
  • build tools version

Android のビルド時に指定するバージョンの意味については下記を参考にしてください。

Unity 5.5 からは Unity から直接 Gradle プロジェクトが生成できるようになりました。このツールは Unity 5.5 以降の Gradle プロジェクトの生成には対応していません。

用意するもの

  • Unity のプロジェクト
    • バッチモードで Android プロジェクトが生成できるスクリプト
      • このプロジェクトでは void GradleTest.BatchBuild.Build()
  • make-gradle-buildable.bash
  • gradle ディレクトリー
    • build.gradle は記載してある各バージョンを必要に応じて書き換えること

やっていること

  1. Unity から ADT 形式の Android プロジェクトを build-adt ディレクトリーに出力する。
  2. gradle ディレクトリーに用意した Gradle 関連のファイルを build-adt ディレクトリー以下にリンクする。
  3. Gradle を使って Android プロジェクトをビルドする。

ソース説明

バッチモードで Android プロジェクトを生成するには、BuildOptions.AcceptExternalModificationsToPlayer を指定して string BuildPipeline.BuildPlayer(string[], string, BuildTarget, BuildOptions) を呼ぶ。第2引数は "build-adt" を指定する。これは、後で使うスクリプトにハードコードされているため。

make-gradle-buildable.bash で、gradle ディレクトリーに用意した Gradle 関連のファイルを build-adt ディレクトリー以下にリンクしている。

build.gradle は ADT の構成のディレクトリーを対象とするために、android.sourceSets で各ディレクトリーを指定している。その他は一般の Android の Gradle ファイルと同じ。

使い方説明

ソースの用意ができたら下記手順で Unity プロジェクトを Android アプリケーションにビルドする。

1. Unity プロジェクトから Android プロジェクトを出力する

Unity の「Build Settings」で「Google Android Project」にチェックを入れてビルドする。もしくは、下記(macOS での例)のようにプロジェクトルートで上述のバッチモードを実行する。

$ /Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -quit -executeMethod GradleTest.BatchBuild.Build

2. Gradle でビルドできるようにする準備

プロジェクトルートで make-gradle-buildable.bash を実行する。成功すると最後に SUCCESS と出力される。

3. Gradle でビルドする

カレントディレクトリーを build-adt/$PROD_NAME にして ./gradlew build コマンドでビルドする。$PROD_NAME はこのプロジェクトでは Gradle Test

$ cd "build-adt/$PROD_NAME"
$ ./gradlew build

生成された APK は build/outputs/apk 以下にある。

./make-gradle-buildable.bash./gradlew build の実行は、Unity の post process build にしてしまうのもありだと思う。

CI

Jenkins に設定する場合は、ジョブの「設定」で通常の Unity のビルドのように「ビルド」に「Invoke Unity3d Edior」で上記 1 を設定し、「シェルの実行」に下記のスクリプトで 2・3 を設定すればよい。

./make-gradle-buildable.bash
pushd "build-adt/$(ls -1 build-adt)"
  ./gradlew build
popd