こんにちわ、オオバです。

Xcodeのビルド設定にフレームワークを
手動で追加するのは面倒くさいですよね。

できることなら、Unityから書き出した
Xcodeプロジェクトはビルドボタンを押すだけにしたい。

本記事ではXcodeのフレームワークファイルを
自動的にXcodeビルド設定に追加する方法を紹介します。

ジェンキンスでUnityのビルドを自動化してい方にも
参考になると思います。

この記事の内容

結論 : Plugins/iOS/フォルダに入れる

以前はUnityのポストプロセスで処理を書く必要がありました。
執筆時(Unity2018.3)ではフレームワークファイルを
一式Assets配下に入れるだけでOKです。

ただ、Plugins/iOS/フォルダ
入れてやると自動的にiOSのプラグインとして
設定されるのでオススメです。

そもそもフレームワークファイルどこにあるのか?

Xcodeアプリの中にあります。
例えばCloudKit.frameworkであれば、
以下のディレクトリに格納されています。

Xcodeフレームワークファイル格納先
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform  
/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/  

Xcodeビルド時に必要フレームワークをUnity側で自動的にセットする_0

このように多くのフレームワークファイルが並んでいます

物によっては違う場所

libz.tbdは先の場所とは違います。

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform  
/Developer/SDKs/iPhoneOS.sdk/usr/lib  

上記の場所に格納されています。
ややこしいですね。

Xcodeビルド時に必要フレームワークをUnity側で自動的にセットする_1

【注意】 tbdファイルは例外

.tbdファイルはUnityプロジェクトに
格納する方法ではうまく動いてくれません。

.tbdファイルはPostProcessBuildを使う

こんな感じでPostProcessBuild処理を
書かないと自動的にインポートされないのでご注意を。

using UnityEditor;  
using UnityEditor.Callbacks;  
#if UNITY_IOS
using UnityEditor.iOS.Xcode;  
#endif

public static class PostProcessBuild  
{
    [PostProcessBuild]  
    public static void OnPostProcessBuild(BuildTarget buildTarget, string path)  
    {
#if UNITY_IOS
        string projectPath = PBXProject.GetPBXProjectPath(path);  

        PBXProject pbxProject = new PBXProject();  
        pbxProject.ReadFromFile(projectPath);  

        string target = pbxProject.TargetGuidByName("Unity-iPhone");  
        var tbdFile = "hogehoge.tbd";  
        pbxProject.AddFrameworkToProject(target, tbdFile, false);  
        pbxProject.WriteToFile(projectPath);  
#endif
    }
}

そもそもアプリの中身が見れない

Xcodeのバージョンで微妙に格納場所が
違うという情報も見つかります。

実際に潜って確認したほうが良いかもしれません。

【補足】 アプリの中身を見る方法

2通り紹介します。

1. ファインダを使う方法

  1. Xcode.appを右クリック
  2. パッケージの内容を表示をクリック

Xcodeビルド時に必要フレームワークをUnity側で自動的にセットする_2

するとXcodeの中身が確認できます。

2. ターミナルを使う方法

ターミナルで以下のコマンドを
実行すると中身がFinderで開きます。

$ open /Applications/Xcode.app/Contents  

格納先が見つからない場合

findコマンドで検索しましょう

# Xcode.appの中に潜る
$ cd /Applications/Xcode.app/Contents  

# Xcode.appの中身を検索
$ find . -name ファイル名  
Xcode.appの中からlibz.tbdを検索するDEMO

Xcodeビルド時に必要フレームワークをUnity側で自動的にセットする_3


フォローすると UIデザイナー力の上がるTwitter やってます!
今日から使えるテクニックを発信中。
ぜひフォローしてみてください!
👉フォローはこちら!

最後まで読んでいただきありがとうございました!
すばらしいXcodeライフをお過ごしください。

期間限定 最大95%オフセール
効率UPメガバンドル開催中!最大95%オフ!!!
期間 : 11月1日午後15時59分まで
オススメ記事
検証環境
参考サイト