LoginSignup
5
2

More than 3 years have passed since last update.

【Unity】gRPCを用いたプロジェクトをiOS向けにビルドした時のlinker command failed with exit code 1 エラーの対処法

Last updated at Posted at 2020-03-29

はじめに

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を行い、ビルドを実行します。


以上です。
これでビルドが上手くいくのではないかと思います。

参考

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2