【Unity】 FBLPromises エラー Xcodeで非推奨になったBitcodeを自動的にオフにする

お久しぶりです。マカロンです。
今回は Xcodeで非推奨になったBitcodeを自動的にUnity内でオフして
いちいちビルドした後にXcode側で設定しなくても済むように
する方法を紹介したいと思います。

それでは早速いきましょう!


そもそもBitcodeとは

BitcodeはXcodeの機能で
を実装する際に
よく出るエラーの一つで厄介な存在です。

概要はこちらの記事がわかりやすくまとめてくれています。


FirebaseやAdmobを実装して
Xcodeでビルドした際に下記のようなエラーが出る場合があります。

error build: '/Users/Library/Developer/Xcode/DerivedData/Unity-iPhone-epytbalgcvkjceamxxkqcebmndtr/Build/Products/ReleaseForRunning-iphoneos/PromisesObjC/FBLPromises.framework/FBLPromises(FBLPromise.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. file '/Users/Library/Developer/Xcode/DerivedData/Unity-iPhone-epytbalgcvkjceamxxkqcebmndtr/Build/Products/ReleaseForRunning-iphoneos/PromisesObjC/FBLPromises.framework/FBLPromises' for architecture arm6

これがBitcodeのエラーで非推奨となったBitcodeの機能をオフにする
必要があるのですが、Target内のどのBitcodeの設定を切ればいいのかだったり他のエラーと混合してエラーの原因を複雑にする要因なのです。

この機能が必要なパターンは存在しないのでUnity側で切っちゃって
この問題に悩むことのないようにしていきたいと思います。


コード

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using System.Collections;
using System.Collections.Generic;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;
#endif

public class PostXcodeBuild
{

#if UNITY_IOS

    static void addUnityFrameworkBitcodeSetting(string pathToBuiltProject)
    {
        string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";
        var pbxProject = new PBXProject();
        pbxProject.ReadFromFile(projPath);

        // UnityFramework
        string target = pbxProject.GetUnityFrameworkTargetGuid();
        pbxProject.SetBuildProperty(target, "ENABLE_BITCODE", "NO");

        File.WriteAllText(projPath, pbxProject.WriteToString());
    }

    [PostProcessBuild]
    public static void SetXcodePlist(BuildTarget buildTarget, string pathToBuiltProject)
    {
        if (buildTarget != BuildTarget.iOS)
        {
            return;
        }

        /*addUnityFrameworkBitcodeSetting*/
        addUnityFrameworkBitcodeSetting(pathToBuiltProject);
    }
#endif
}

こちらをAssets直下のEditorファイルに入れてください。

動きとしてはUnity FrameworkのBitcodeをオフにしているだけです。
[PostProcessBuild]で呼び出すことでXcodeの設定をUnityで設定できます。

最後に

短い記事となりましたが、忘れた頃に躓くので
未来の自分のためにも書き残しておきます。誰かの役に立てば幸いです。

もしこの記事が役に立った!と思ってくれたら
ぜひウチのゲームを遊んでやってください、お願いします!


ではまた!


ゲームを作るにはやはりお金がないとできることが限られてしまいます。なのでよろしければどうか支援してくださるとうれしいです