Fatal error in Unity CIL LinkerMono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Firebase.Platform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

9:00
UnityプロジェクトをiOS用にビルドしようと思ったら、エラー出た。

Fatal error in Unity CIL Linker
Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Firebase.Platform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
   at Unity.IL2CPP.Common.MissingMethodStubber.GetTypeModule(TypeReference type, IEnumerable`1 assemblies) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Common/MissingMethodStubber.cs:line 178
   at Unity.Linker.Steps.AddUnresolvedStubsStep.MarkAssemblyOfType(UnityLinkContext context, TypeReference type) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/AddUnresolvedStubsStep.cs:line 18
   at Unity.Linker.Steps.Marking.UnresolvedStubMarking.HandleUnresolvedType(TypeReference reference) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/Marking/UnresolvedStubMarking.cs:line 96
   at Unity.Linker.Steps.UnityMarkStep.HandleUnresolvedType(TypeReference reference) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/UnityMarkStep.cs:line 207
   at Mono.Linker.Steps.MarkStep.MarkInterfaceImplementations(TypeDefinition type) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1853
   at Mono.Linker.Steps.MarkStep.MarkRequirementsForInstantiatedTypes(TypeDefinition type) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 2472
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference, DependencyInfo reason, IMemberDefinition sourceLocationMember) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1495
   at Mono.Linker.Steps.MarkStep.MarkField(FieldDefinition field, DependencyInfo& reason) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1293
   at Mono.Linker.Steps.MarkStep.MarkField(FieldReference reference, DependencyInfo reason) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1279
   at Unity.Linker.Steps.Marking.MonoBehaviourMarking.MarkNeededFields(TypeDefinition type) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/Marking/MonoBehaviourMarking.cs:line 35
   at Unity.Linker.Steps.Marking.MonoBehaviourMarking.DoAdditionalTypeProcessing(TypeDefinition type) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/Marking/MonoBehaviourMarking.cs:line 28
   at Unity.Linker.Steps.UnityMarkStep.DoAdditionalTypeProcessing(TypeDefinition type) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/UnityMarkStep.cs:line 171
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference, DependencyInfo reason, IMemberDefinition sourceLocationMember) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1519
   at Mono.Linker.Steps.MarkStep.MarkField(FieldDefinition field, DependencyInfo& reason) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1292
   at Mono.Linker.Steps.MarkStep.MarkEntireTypeInternal(TypeDefinition type, Boolean includeBaseTypes, DependencyInfo& reason, IMemberDefinition sourceLocationMember, HashSet`1 typesAlreadyVisited) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 315
   at Mono.Linker.Steps.MarkStep.MarkEntireAssembly(AssemblyDefinition assembly) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 1159
   at Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition assembly) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 204
   at Unity.Linker.Steps.UnityMarkStep.InitializeAssembly(AssemblyDefinition assembly) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/UnityMarkStep.cs:line 34
   at Mono.Linker.Steps.MarkStep.Initialize() in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker.Steps/MarkStep.cs:line 194
   at Unity.Linker.Steps.UnityMarkStep.Process(LinkContext context) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker.Steps/UnityMarkStep.cs:line 255
   at Unity.Linker.UnityPipeline.ProcessStep(LinkContext context, IStep step) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker/UnityPipeline.cs:line 22
   at Mono.Linker.Pipeline.Process(LinkContext context) in /Users/bokken/build/output/unity/il2cpp/repos/monolinker/src/linker/Linker/Pipeline.cs:line 128
   at Unity.Linker.UnityDriver.UnityRun(UnityLinkContext context, UnityPipeline p, LinkRequest linkerOptions, TinyProfiler2 tinyProfiler, ILogger customLogger) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker/UnityDriver.cs:line 158
   at Unity.Linker.UnityDriver.RunDriverWithoutErrorHandling(TinyProfiler2 tinyProfiler, ILogger customLogger) in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker/UnityDriver.cs:line 100
   at Unity.Linker.UnityDriver.RunDriverWithoutErrorHandling() in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker/UnityDriver.cs:line 68
   at Unity.Linker.UnityDriver.RunDriver() in /Users/bokken/build/output/unity/il2cpp/UnityLinker/Linker/UnityDriver.cs:line 49

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

Firebase関係のエラーぽい。
別件でFirebaseからInternal Errorが返ってくるエラーがまだ解消できてないんだけど、それも関係あるだろうか。SDKをうまく参照できていなそう。

Unityで出るエラーって調べてもドンピシャな結果が全然出てこないのなんなんだろう。

ChatGPTに聞いてみた。
以下回答

以下をチェックしろと。

Firebaseのバージョンは最新、Unityは2022.2.0b11
Firebaseのドキュメントには、「Unity 2019.1 以降」と書いてあるのでOK。
https://firebase.google.com/docs/unity/setup?hl=ja

Firebaseのバージョンは最新なのでOK

asmdefファイルってなんだ?

https://qiita.com/toRisouP/items/d206af3029c7d80326ed

csprojってなんだ?「アセンブリが分割」ってなんだ?
とりあえず自分で設定した覚えがないのでAssembly Definitionsとやらは関係ないだろうか。

Assets -> Reimportはグレーアウトされて使えなかったので、Refreshしてみた。
再度Buildを試す。
エラー変わらず。

FirebaseのSDKを再度インポートして、Buildしてみる。
Unityが「応答なし」になったので再起動。
再度インポートしなおしてBuild。
エラー変わらず。

Scripting BackendはIL2CPP。変更できないようにグレーアウトされてる。
Target Minimum iOS Versionは12。

FirebaseApp.CheckAndFixDependenciesAsync部分を実行してテストしてみる。
Unityが「応答なし」になったので再起動。
またUnityが「応答なし」になったので再起動。
またUnityが「応答なし」になったので再起動。

何がいけないんダァぁぁぁぁぁぁぁぁ。

Assets/Firebase/Pluginsに入ってるプラグインのiOSのチェックを外す。(昨日他のエラーを解消しようとして謎にチェックを入れたので)

再度実行。
またUnityが「応答なし」になったので再起動。
エラーくらい出してくれ。。
再度実行。
FirebaseApp.CheckAndFixDependenciesAsyncを呼ぶとUnity自体がクラッシュしてるっぽい。

11:30
FirebaseのInitializationが散らかってたから、それを直したら解消した。
再度テスト。

FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            dependencyStatus = task.Result;
            if (dependencyStatus == DependencyStatus.Available)
            {
                Debug.Log("dependencyStatus == DependencyStatus.Available");
                InitializeFirebase();
            }
            else
            {
                Debug.LogError("Could not resolve all Firebase dependencies: " + dependencyStatus);
            }
        });

無事「dependencyStatus == DependencyStatus.Available」がコンソールに表示された。問題なさそう。
再度Build。
Unityが「応答なし」になったので再起動しようとしたら、「応答なし」が解消した。あれ、応答なしって待ってれば解消されるやつ?他ソフトだと完全不能になるイメージなんだけど。

11:50

また応答なしになったので10分待ってみた。
解消しないので再起動。
懲りずにもう一度Build。
今度はちゃんと終了してFatal error in Unity CILエラーが出た。
つまり何も解決してない。

ChatGPTもお手上げか。。

/Applications/Unity/Hub/Editor/2022.2.0b11/Unity.app/Contents/il2cpp/build/deploy/il2cpp --convert-to-cpp --generatedcppdir=/Users/username/Desktop/appfolder/unity/My-App/Library/Bee/artifacts/iOS/il2cppOutput/cpp --enable-analytics --emit-null-checks --enable-array-bounds-check --generics-option=None,EnableFullSharing --dotnetprofile=unityaot-macos --profiler-report --profiler-output-file=/Users/username/Desktop/appfolder/unity/My-App/Library/Bee/artifacts/il2cpp_conv_ljyb.traceevents --print-command-line --external-lib-il2-cpp=/Libraries/libil2cpp.a --data-folder=/Users/username/Desktop/appfolder/unity/My-App/Library/Bee/artifacts/iOS/il2cppOutput/data
Error: IL2CPP error (no further information about what managed code was being converted is available)
System.InvalidOperationException: Sequence contains no elements
   at System.Linq.ThrowHelper.ThrowNoElementsException()
   at Unity.IL2CPP.DataModel.BuildLogic.DataModelBuilder.Initialize(UnderConstruction`2& systemAssembly) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.DataModel/BuildLogic/DataModelBuilder.cs:line 288
   at Unity.IL2CPP.DataModel.BuildLogic.DataModelBuilder.Build() in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.DataModel/BuildLogic/DataModelBuilder.cs:line 52
   at Unity.IL2CPP.AssemblyConversion.Phases.InitializePhase.Run(AssemblyConversionContext context) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/Phases/InitializePhase.cs:line 19
   at Unity.IL2CPP.AssemblyConversion.Classic.ClassicConverter.Run(AssemblyConversionContext context) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion.Classic/ClassicConverter.cs:line 11
   at Unity.IL2CPP.AssemblyConversion.AssemblyConverter.ConvertAssemblies(AssemblyConversionContext context, ConversionMode conversionMode) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/AssemblyConverter.cs:line 38
   at Unity.IL2CPP.AssemblyConversion.AssemblyConverter.ConvertAssemblies(TinyProfiler2 tinyProfiler, AssemblyConversionInputData data, AssemblyConversionParameters parameters, AssemblyConversionInputDataForTopLevelAccess dataForTopLevel) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/AssemblyConverter.cs:line 13

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

ちなみにこんなエラーも出てる。
ChatGPTに聞いてみる。

対処法を確認する。

https://stackoverflow.com/questions/11801769/handling-sequence-has-no-elements-exception

リストの最初の要素を取得するFirst()が原因らしい。
エラーをクリックしてBeeBuildPostprocessor.csを開こうとしたが、Path does not existと出る。

Build Settingsなども確認してみたが問題がありそうな箇所はない。

諦めてUnityフォーラムに質問。

https://forum.unity.com/threads/error-il2cpp-error-no-further-information-about-what-managed-code-was-being-converted-is-available.1529194/

返信を待つ

13:00

新しい空白プロジェクトを作って、ビルドできるか調べてみよう。

早速エラー
[Collab] Collab service is deprecated and has been replaced with PlasticSCM

https://qiita.com/segur/items/0ce6876a8ea83dc58431

Packages/manifest.jsonファイルはそもそもなかった。
Disconnect from Unity Cloudをやって見た。

ヤッターーーー。
今度はFirebaseAuth SDKを追加してビルドしてみる。

ヤッターーーー。
問題はFirebaseAuthじゃないのか??
FirebaseAnalyticsもインポートしてビルドできた。
FirebaseFirestoreもインポートしてビルドできた。
Firebaseの全てのSDKをインポートしてみた。
DynamicLinkをインポート中にUnityフリーズ。
全てインポートしてもビルドできた!!

14:00

プラグイン自体は問題じゃないことがわかった。
コードをちょっとずつ追加してみる。

Firebase関連をいくつか追加したけどBuildできちゃう。。

元のUnityプロジェクトに戻る。
FirebaseのSDKを一旦全て消去して、再度インポートしてみる。

ダメだった。

新しい空白プロジェクトに戻る。

とりあえずFirebase関連コードだけ全部移植してみる。
ビルドできる!!!!!!!!!!!!!!
なんで!!!!!!!!!!!!!!!
どうしたらいいの!!!!!!!!!!!!

後日

エラーの原因はGoogleのStreaming Speech Recognitionだということが判明した。
https://assetstore.unity.com/packages/tools/ai-ml-integration/streaming-speech-recognition-using-google-cloud-vr-ar-mobile-des-115172

しかし解決方法はまだ全然わからない。

後日2

BurstとFrontweepGamesのStreamingSpeechRecognitionが同時に入っているとエラーが起こるらしかった。
必須ではないBurstの方を消去することで解決!
共存させる方法はわからない。

この記事が気に入ったらサポートをしてみませんか?