はじめに
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で出ることがあります。
このエラーを解決する方法をこの記事に書きました。参考になれば幸いです。
実行環境
- Unity v2019.3.6f1
- macOS Catalina v10.15.4
- gPRC(C#) v2.29.0
- Xcode v11.4
対処法
以下が対処法になります。
手順が全部で4つあるので、手順1から順に指示に従っていただければと思います。
手順1
Assetsフォルダ直下にEditorという名前のフォルダを作成します。
もう既にある場合は作成する必要はありません。そのまま手順2へ進んでください。
手順2
次のスクリプトを作成し、UnityのEditorフォルダ内に置きます。
BuildHelper.cs
#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