AppLovinのサンプルをビルドできないという問題が出たので、それの対処法をメモしておく。
以下のバージョンで試した。
- Unity 2021.1.6f1
- Applovin Max SDK 4.3.1
とりあえず手順通り進めてみる
UnityでApplovin Max SDK を導入する際にビルドエラーが出る問題を解決する。
とりあえず自分の環境のまっさらな状態でちゃんとサンプルプロジェクトが動くことを確認する。
以下のプロジェクトをダウンロードして適当な場所に展開
しょっぱなから以下のエラーが出るので、
Deterministic compilation failed. You can disable Deterministic builds in Player Settings
Library\PackageCache\com.unity.multiplayer-hlapi@1.0.4\Editor\Tools\Weaver\AssemblyInfo.cs(22,28): error CS8357: The specified version string contains wildcards, which are not compatible with determinism. Either remove wildcards from the version string, or disable determinism for this compilation
Packages/manifest.json の以下の文を削除して保存
"com.unity.multiplayer-hlapi": "1.0.4",
以下の作業を行い、とりあえずビルドしてみる
- AppLovin -> Integration Managerを立ち上げて、AppLovin SDK Key を入力
- HomeScreen.cs の「MaxSdkKey」の「"ENTER_MAX_SDK_KEY_HERE"」も AppLovin SDK Key に書き換える
- Builds SettingsでAndroidにSwitch Platform
- Buildする
問題発生
すると、以下のエラーが出る。
Gradle build failed. See the Console for details.
もしくはビルドできても、起動してすぐに強制終了してしまう。
というわけで、ここからが本題。
これ以降は要注意だが、あくまでも対処療法なので、これをすれば必ず治るわけでもないし、乱暴なやり方なのでプロジェクトを壊す恐れがある。以下は__必ず自分のプロジェクトではやらずに、サンプルプロジェクトで行うこと__。もしくは、__自分のプロジェクトでやる場合はGitなどでちゃんと元に戻せる状態で始めること__を注意されたし。
対処法
1. 最新版のApplovin Max SDK for Unityをインストールする
以下のサイトで配布している、最新版を改めてインストールする
(ちなみに、この時点で再度ビルドしてもやはり同様にビルドエラーが出る)
2. Force Resolveをする
メニューから Assets > External Dependency Manager > Android Resolver > Force Resolve をして強制的に解決する。
すると、Plugins/Android/ に大量のファイルができる。
これでうまくいくだろうと思うが、ビルドしてもやはりエラーが出る。
3. Plugins/Android/ の中身を消す
最初からある「AndroidManifest.xml」「res/」以外の 2でできたものをいったん削除する。ただし、あくまでも2でできたものに限るので、余計なものを消さないように気を付ける。
4. もう一回Force Resolveをする
2でやった「Force Resolve」をもう一度する。するとやはりPlugins/Android/ に大量のファイルができる。
再度ビルドしてみると、今度はうまくいくはず。
結局どういうこと?
結果から考えると、
- Plugins/Android以下にAndroid用の関連ファイルがないとビルドできない
- そのためには Force Resolve をする必要がある
- しかし、そこにバージョンが古い関連ファイルが残ってしまうとNG
- つまり一回まっさらな状態にしてから Force Resolve すると最新版の関連ファイルだけになる
ということだと考えられる。
それでもビルドできないときの対処法 (2021/7/16 追記)
- まずUnityをいったん落として、再度立ち上げてからビルドしてみるとうまくいくケースがある
- おそらくTempフォルダに変な情報が残っているためだと考えられる
- Unityを落とすとTempフォルダが削除されるので、それでうまくいくのではないか?
- おそらくTempフォルダに変な情報が残っているためだと考えられる
- それでもうまくいかないときは、上でやったPlugins/Androidのプラグインを一掃して、Force Resolve する
- これでたいていうまくいく
- それでもうまくいかないときは、引き金となったネットワークのSDKを一回削除して、もう一回ビルドから始める
- これでたいていうまくいく
- AppLovin Integration Manager で「Install」するだけでよい
- それぞれのサイトからSDKをDLする必要はない
- 余計なものも入るので
- それぞれのサイトからSDKをDLする必要はない
それでもなおビルドできないときの対処法 (2022/7/22追記)
AdMobを入れたときどうにもこうにもエラーが出て進めなかった。
- いったんUnityを落とす
- Libraryフォルダを消す
- Unityを起動する(プラットフォームはリセットされているのでちゃんとiOS/Androidに再設定すること)
- ビルドする
実際にこれでうまくいった。たまにこの症状が出たときはもう一回消すしかなさそう。