はじめに
こんにちは
ゲーム開発を仕事にして3年目のプログラマーの七埜です。
今回私が開発中に引っ掛かって2週間ぐらい悩んだことが解決したので備忘録として残します。
開発環境
- Unity2018.2.20f1
- Firebase 5.4.4
- Jenkins
問題
今回発生した問題は、
Jenkinsで起動したUnityでビルドをした際に特定端末で
[FirebaseX.X.X DLLNOTFOUNDEXCEPTION]というエラーが発生して
起動はするがアプリが正常に進行しません。
基本的な対応としましては下記の参考文献のような対応をするとSDKが更新されるので解決します。
しかし、散々試しましたがJenkinsでビルドをする場合これでは解決しません。
解決策
今回の解決策は
バッチビルドをする際にサイレントモードでビルドをしない
です。
つまり
Before
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -quit -logFile <ログファイルへのパス> -projectPath <UnityProjectへのパス> -executeMethod <実行したメソッド>
After
/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -logFile <ログファイルへのパス> -projectPath <UnityProjectへのパス> -executeMethod <実行したメソッド>
わかりづらくて申し訳ないですが
-batchmodeを削除してください。
これでサイレントでUnityが立ち上がらなくなります。
何故サイレントがだめなのかというと正直分かりません!
が、個人的な見解としましては
サイレントビルドではUnity起動時に走るFirebaseのAuto Resolverが走らないのではないかと思っています。
最後に
いかがでしたでしょうか?
これにはまってJenkinsでビルドしたのに端末でプレイできなく
泣く泣く手動ビルドをしていました。
これでJenkinsのビルドに頼れるので自分の環境をビルドに提供しなくてよくなりました!
もしここ間違っているよ等ありましたら教えていただければ幸いです。
皆様が同じエラーではまった際の助力になれば幸いです。
参考文献
dll not found について
https://github.com/firebase/quickstart-unity/issues/324
https://stackoverflow.com/questions/51363894/firebase-auth-and-unity3d-unable-to-find-firebasecppapp-5-1-1
バッチビルドについて
https://docs.unity3d.com/ja/current/Manual/CommandLineArguments.html