はじめに
gRPCを用いてUnityで作成したプロジェクトをiOS向けにビルドすると、お馴染みの
linker command failed with exit code 1 (use -v to see invocation)
というエラーと共に、
**/Libraries/Plugins/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a(grpc_csharp_ext.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
のようなエラーがXcodeで出ることがあります。
このエラーを解決する方法をこの記事に書きました。参考になれば幸いです。
実行環境
対処法
以下が対処法になります。 手順が全部で4つあるので、手順1から順に指示に従っていただければと思います。
手順1
Assetsフォルダ直下にEditorという名前のフォルダを作成します。
もう既にある場合は作成する必要はありません。そのまま手順2へ進んでください。
手順2
次のスクリプトを作成し、UnityのEditorフォルダ内に置きます。
#if UNITY_IPHONE using System.IO; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; public class BuildHelper { [PostProcessBuildAttribute(1)] public static void OnPostProcessBuild(BuildTarget target, string path) { if (target == BuildTarget.iOS) { var projectPath = PBXProject.GetPBXProjectPath(path); var project = new PBXProject(); project.ReadFromString(File.ReadAllText(projectPath)); var targetGUID = project.GetUnityFrameworkTargetGuid(); project.AddFrameworkToProject(targetGUID, "libz.tbd", false); project.SetBuildProperty(targetGUID, "ENABLE_BITCODE", "NO"); File.WriteAllText(projectPath, project.WriteToString()); } } } #endif
(参考: Unity2018.2 + il2cppでgRPCアプリをAndroid/iOS向けにビルドする)
手順3
ターミナルで
sudo rm -rf ~/Library/Developer/Xcode/DerivedData/*
を実行し、DerivedData (プロジェクトに生成されるキャッシュデータ)を削除します。
手順4
UnityでBuild And Runを行い、ビルドを実行します。
以上です。 これでビルドが上手くいくのではないかと思います。
参考
- 【Unity】Xcodeでビルドするときに「linker command failed with exit code 1 」エラーが出たときの対処法|Unishar-ユニシャー
- [Xcode] "linker command failed with exit code 1" エラー対処方法 / lileaLab
- Xcodeで「linker command failed with exit code 1」が発生した時はDerivedDataを消してみよう - Qiita
- オデの日記@WEB系: linker command failed with exit code 1が出た時の解決方法案
- Unity2018.2 + il2cppでgRPCアプリをAndroid/iOS向けにビルドする
- UnityでgRPCアプリ(iOS, Android)をビルドできるようになった - Qiita
- Unity C#: Xcode reports libgrpc_csharp_ext.a does not contain bitcode · Issue #16839 · grpc/grpc · GitHub