Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@mogmet

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

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

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許容参照型が使えるようになるので早くまともに使えるようになってほしいですね。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mogmet
virapture株式会社CEO。アプリからインフラまでなんでもやります。firebase使ってサクッと作るのが好き。サクッとサービスを作ったりする相談や技術顧問も受け付けております。 ワンナイト人狼作ってます。 あとはこのへんみてください。 https://mogmet.com/ https://virapture.com/

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?