28
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity5.5からgradleでAndroidのビルドができるよ

Last updated at Posted at 2016-10-07

Unity5.5b6で確認しています。

image

Unity5.5では、Build Settingsに Build System という項目が増え、
Gradleによるビルドが選択できるようになっています。
つまり、build.gradle が使えるようになるということです。

とは言え、当面はbuild.gradleを手軽に編集することはできないようで、
一旦AndroidプロジェクトをExportするか、裏技的に
PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/
にあるテンプレートを書き換えれば一応変更できる、という状況のようです。

That is not supported in the first version. But...
The templates used for creating the build.gradle files are in PlaybackEngines/AndroidPlayer/Tools/GradleTemplates
inside the Unity application directory, so as a hack in the current version you can try changing the mainTemplate.gradle directly.

Most likely we will add support for providing your own template inside your project in an upcoming patch release.

そのうち対応されるようですが、現在はこういった状況なので、スクリプトで無理やり対応してみます。

[追記] 5.5.2からは Plugins/Android/build.gradle で上書きしてくれるようです。

Androidプロジェクトをgradle形式でExportできるようになったので、
以下の手順でbuild.gradleを上書きしつつ、ビルドすることができます。

  1. Androidプロジェクト(gradle形式)をExport
  2. Exportしたプロジェクトの中のbuild.gradleを、Plugins/Android/build.gradleに差し替える
  3. gradleでビルドする

これを実装したスクリプトをGitHubに上げました。 (2016/10/12更新)
https://github.com/tkyaji/UnityAndroidGradleBuild

AndroidGradleBuild.unitypackageをインポートすると、Editor配下にビルド用スクリプトが設置されます。
メニューに Build -> Gradle Buildという項目が追加されるので、これを実行するとビルドが走ります。

image

以下のようなコードを書くことで、ビルド時にbuild.gradleを編集できるようにしてみました。

// 1. add classpath
rootGradleElement.AddElement(new GradleParser.GradleTextElement("classpath 'com.google.gms:google-services:3.0.0'"), "buildscript", "dependencies");
// 2. add dependencies compile
rootGradleElement.AddElement(new GradleParser.GradleTextElement("compile 'com.google.firebase:firebase-core:9.6.1'"), "dependencies");
// 3. add apply plugin
rootGradleElement.AddElement(new GradleParser.GradleTextElement("apply plugin: 'com.google.gms.google-services'"));

詳しくはサンプルクラスを参照してください。
SampleGradleSettings.cs

build.gradleが使えると、PlayServicesResolver を使ってaar入れたりとかが不要になって、
ライブラリ周りではだいぶ便利になるのでとても嬉しいです。

余談

Firebaseを使う際classpath 'com.google.gms:google-services:3.0.0'
の設定が必要で、
Unityではムリだと諦めかけていたんですが、これでなんとか動かせるかな?

28
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?