5
1

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 3 years have passed since last update.

unity 2020.1以降の環境下でfirebase on the android実機を動かす

Posted at

こんにちは。もぐめっとです。

IMG_4533.jpg

最近、お酒を飲みすぎてやらかしたので禁酒してます。

表題の件で、unity2020でfirebaseを使おうとすると、少しトラップがあったので共有しておきます。

概要

unity 2020.2.0a21 という攻めたα環境でandroidでのビルドを行ったところ下記エラーが発生しました

E/Unity: Failed to read Firebase options from the app's resources. Either make sure google-services.json is included in your build or specify options explicitly.

そのエラーに対する探検歴です。

解決法

調べたところマニュアルに対策が書かれていました。

Add Firebase to your Unity project / Missing Firebase Android config file in Unity 2020.

ちなみにマニュアル開くところからトラップなんですけど、↑のページなのですが、言語を日本語から英語にしないと出てきません。
しかも結構日本語で書かれてない他のKnown issuesがワラワラ出てくる。
Unity Package ManagerのインストールがUnityの外部依存関係マネージャー(略してEDM4U、以前はPlay Services ResolverまたはUnity Jar Resolverとかよばれていた)とコンフリクトしてるとか、
Unity 2018でUnity Package Managerを介してインストールするとネイティブ依存関係の一部を検出できないとかとか。。

詳しくは英語で見てくださいっ!

話を戻すと、かのURLに書いてあることは、こんな事が書いてあります。

In order to support versions of Unity that do not have the ability to customize the Gradle build, the Firebase editor tool generates Assets/Plugins/Android/Firebase/res/values/google-services.xml as an Android resource to be packaged into an Android build, so that the Firebase SDK can use it to initialize the default FirebaseApp instance.
In Unity 2020, all Android resources must be in directories with a .androidlib suffix. If your project is using a Firebase SDK that generates an Assets/Plugins/Android/Firebase directory, rename it to Assets/Plugins/Android/Firebase.androidlib. Make sure it contains AndroidManifest.xml, project.properties and res/values/google-services.xml.

つまり、Unity2020からはandroidのリソースをおいてるディレクトリは.androidlibのsuffixついてないとだから、Assets/Plugins/Android/Firebaseにgoogle-services.xmlとか諸々必要ファイルおいてあったら Assets/Plugins/Android/Firebase.androidlib にディレクトリ名変えてくれよな!

ってことらしい。

ディレクトリ名を変えてみたら無事androidのビルドが通ることができました。

恒久対応

この対応ですとなにかのはずみでAssets/Plugins/Android/Firebaseディレクトリが復活したりして二重管理みたいになってました。
そのため、その対応策としてとりあえずシンボリックリンクを張ってどちらでも同じファイルを見るように解決できました。

$ ln -s Assets/Plugins/Android/Firebase Assets/Plugins/Android/Firebase.androidlib

その他の対応方法

公式firebaseアカウントがリツイートしていましたが、こんな方法もあるようです。

同じ方法はこのissueでも上がってました。

ただ、結局マニュアルに書いてある方法で解決できたためこちらの方法は試してはいないです。

@mogmetの所感

unity2020自体がまだ出たてで少し発展途上なところがあるので使う方は人柱覚悟で行く必要がありそうです。
ただ、unity2020.2からはC#8になって、目玉機能であるnull許容参照型が使えるようになるので早くまともに使えるようになってほしいですね。

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?