1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityでiOSビルド後の設定を自動化する:PostProcessBuild入門

Last updated at Posted at 2025-12-14

Unity で iOS アプリを開発していると、Xcode 側で毎回同じ設定を手動で変更するのがつらい…… という場面が必ず出てきます。

  • Info.plist に権限説明を追加したい
  • iOS Framework をリンクしたい
  • Swift を使う際のビルド設定を整えたい
  • ネイティブブリッジ用の .mm を自動で配置したい

しかし、これらを “ビルドのたびに Xcode で手作業” するのは非効率で、ミスも起きやすいです。

そこで役立つのが PostProcessBuild です。

この記事では、初心者でも理解できるように、概念を中心に PostProcessBuild の仕組みと代表的な用途をわかりやすく解説します。コード例は必要最低限に抑えています。


PostProcessBuildとは?

Unity のビルドが完了したあと、Xcode プロジェクトに対して自動処理を追加できる仕組みです。

代表的にできること:

  • Info.plist の編集
  • iOS Framework の追加
  • Build Settings の変更
  • ネイティブ (.mm / .swift) ファイルの登録

つまり、iOS ネイティブ周りの面倒な作業を Unity 側で一括自動化できるわけです。


実行順を決める [PostProcessBuild] の番号

[PostProcessBuild] は次のように書きます:

[PostProcessBuild]

この場合、実行順は自動的に 1000 として扱われます。

番号を指定すると順番が変えられます:

[PostProcessBuild(1500)]

よく使われる番号は「1500」

  • Unity の内部処理は 1000 付近で実行される
  • その後に自分の設定を上書きしたい

1500 にしておくと “Unity 標準処理の後” に確実に反映される ため安全です。

番号は必須ではありませんが、iOS 設定を安定させたい場合は付けておくのがおすすめです。


基本的な構造

最小構成のコードは次のようになります。

using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.IO;

public class IOSPostBuild
{
    [PostProcessBuild(1500)]
    public static void OnPostProcessBuild(BuildTarget target, string path)
    {
        var projPath = PBXProject.GetPBXProjectPath(path);
        var proj = new PBXProject();
        proj.ReadFromFile(projPath);

        var targetGuid = proj.GetUnityMainTargetGuid();

        // ここに設定を追加していく

        proj.WriteToFile(projPath);
    }
}

ここから目的に応じて処理を追加していきます。


代表的な用途①:Info.plist のキー追加

カメラ・マイクなどを使う場合、説明文を追加しないと審査リジェクトの原因になります。

例(マイク権限):

var plistPath = Path.Combine(path, "Info.plist");
var plist = new PlistDocument();
plist.ReadFromFile(plistPath);
var root = plist.root;

root.SetString("NSMicrophoneUsageDescription", "アプリで音声を利用します。");

plist.WriteToFile(plistPath);

よく使う権限:

  • NSCameraUsageDescription
  • NSMicrophoneUsageDescription
  • NSPhotoLibraryUsageDescription
  • NSUserTrackingUsageDescription(ATT)

代表的な用途②:iOS Framework の追加

特定の機能を使うためには framework をリンクする必要があります。

例:AppTrackingTransparency.framework

proj.AddFrameworkToProject(targetGuid, "AppTrackingTransparency.framework", false);

falseOptional(弱リンク) を意味します。
OS バージョン依存の framework を扱う際に安全です。

よく使うもの:

  • UserNotifications.framework
  • StoreKit.framework
  • AdSupport.framework

代表的な用途③:ネイティブファイル (.mm / .swift) の登録

Unity → iOS ネイティブ連携を行う場合、Plugins/iOS に配置したファイルを Xcode プロジェクトへ登録する必要があります。

例:

var filePath = Path.Combine(path, "Libraries/Plugins/iOS/NativeBridge.mm");
proj.AddFile(filePath, "NativeBridge.mm");

Swift を使う場合の注意

Swift ファイルを追加した場合は、以下の Build Setting が必須:

  • SWIFT_VERSION
  • ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

忘れると ビルドは通ってもアプリ起動時にクラッシュ しがちです。


代表的な用途④:Build Settings の変更

例:Bitcode を OFF にする(近年では非推奨のため OFF が一般的)

proj.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");

Swift を使う場合:

proj.SetBuildProperty(targetGuid, "SWIFT_VERSION", "5.0");
proj.SetBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");

ほかにも、以下のような設定を自動化できます:

  • CLANG_ENABLE_MODULES
  • DEBUG_INFORMATION_FORMAT
  • iOS Deployment Target の変更

PostProcessBuild は「iOS設定のチェックリスト」を自動化するもの

PostProcessBuild を使うと、以下を毎回自動反映できます:

  • 権限(plist)
  • 必要な framework
  • ネイティブブリッジの登録
  • Swift 設定
  • Build Settings の統一

手作業だとミスが起きやすい部分をすべてコード化できるため、ビルドの安定性が大幅に向上します。


まとめ

  • PostProcessBuild は iOS ビルド後の設定を自動化できる仕組み
  • 番号を付けることで Unity 標準処理より後に実行できる
  • plist 編集・framework 追加・Build Settings 変更などによく使われる
  • Swift 連携時は必須の設定があるため特に有効

Unityで iOS を扱うなら、早い段階で覚えておくと開発スピードが大きく変わります。


ブログでもUnityや個人開発ネタを発信中です!

開発ノウハウやアプリ制作過程、Unity連携系のハマりポイントなど
より深掘りした内容をブログにまとめています。
https://syunpp.com

公開中のアプリ一覧はこちら!

実際にUnityで開発してリリース済みのアプリ一覧をまとめています。
https://syunpp.com/公開中のアプリ一覧/

YouTubeショートでもゲーム開発の裏側を公開中!

Unityで制作中のゲームの進捗や演出テスト、実装の様子を
ショート動画でタイムラプス形式にまとめて発信しています。
https://www.youtube.com/@syunpp_8413/shorts

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?