iOS デバイスのコンパイル・パッケージ化開発ガイド
背景
LCC Unity SDK はプリコンパイル済み DLL の形で公開されています。iOS プラットフォームではネイティブプラグインを動的読み込み(dlopen)ではなく静的ライブラリ(__Internal)としてリンクする必要があるため、iOS アプリケーションをビルドする前にこのドキュメントで説明する追加設定手順を完了する必要があります。iOS と他プラットフォームではネイティブプラグインの読み込み機構に根本的な違いがあり、他のプラットフォーム(Windows、macOS、Android、Linux)では追加操作は不要です。
この SDK は DLL にコンパイルされる際、P/Invoke ターゲットとして "libwebp" を使用します。SDK 内蔵の Editor/RewriteWebpDllImport.cs スクリプトが、iOS ビルド時にそれを "__Internal" に自動的に書き換え、IL2CPP が正しい直接シンボル呼び出しを生成することを保証します。
注:
iOS デバイスアプリケーションをコンパイルする際は、まず SDK パッケージ内の
Editor/RewriteWebpDllImport.txtをEditor/RewriteWebpDllImport.csにリネームして、スクリプトが有効になるようにします。あるいは、SDK パッケージ内でスクリプトの拡張子を直接変更して、プロジェクトの Assets/Editor/ ディレクトリへコピーします。
前提条件
RewriteWebpDllImport.cs スクリプトは、ビルド中に IL 書き換えライブラリ Mono.Cecil を使用するため、先に依存関係としてプロジェクトへ追加する必要があります。方法は 2 つあり、どちらかを選択します。
方法 1:Package Manager で追加(推奨)
Unity メニューバーの Window → Package Manager を開き、左上の + ボタンをクリックし、Add package by name... を選択し、名前 com.unity.nuget.mono-cecil、バージョン 1.11.5 を入力し、Add をクリックして Package Manager のインストール完了を待ちます。以下のとおりです。

Package Manager で com.unity.nuget.mono-cecil を名前指定で追加
方法 2:manifest.json を手動で編集する
プロジェクトの Packages/manifest.json を直接編集し、dependencies に 1 行追加します。
{
"dependencies": {
"com.unity.nuget.mono-cecil": "1.11.5"
}
}
保存後、Unity に切り替えると、Editor が依存関係を自動的に解決してインストールします。
ビルド手順
前提条件の設定を完了したら、標準の iOS ビルド手順に従います。ビルド中に RewriteWebpDllImport が自動的に介入します。
Editor/RewriteWebpDllImport.txtをEditor/RewriteWebpDllImport.csにリネームします(まだリネームしていない場合)。- Unity メニューバーで File → Build Settings を選択し、プラットフォームリストから iOS を選択し、Switch Platform をクリックします。
- Build(または Build And Run)をクリックし、出力ディレクトリを選択して Xcode プロジェクトを生成します。
- ビルド中に、スクリプトが SDK 内の
"libwebp"をターゲットとするすべてのDllImportエントリを"__Internal"に自動的に書き換えます。ビルド成功後、Console には以下のようなログが出力されます。
[RewriteWebpDllImport] Rewrote 77 P/Invoke entries from "libwebp" to "__Internal".
- 生成されたプロジェクトを Xcode で開き、ターゲットの Build Phases → Link Binary With Libraries で
libwebp.a、libwebpdemux.a、libsharpyuv.aがリンクされていることを確認します。 - iOS デバイスを接続し、Xcode で署名して実行します。
注:
Console に
[RewriteWebpDllImport]ログが表示されない場合は、通常スクリプトが有効になっていないことを意味します。ファイルの拡張子が.txtから.csに変更されていることと、Mono.Cecil 依存関係が正しくインストールされていることを確認してください。
トラブルシューティング
| エラーメッセージ | 原因 | 解決策 |
|---|---|---|
Unable to load DLL 'libwebp' | スクリプトが有効になっておらず、DllImport がまだ動的ライブラリ名を指している | RewriteWebpDllImport.txt が .cs にリネームされていることを確認し、再ビルドして Console ログを確認 |
Cannot find LCCSDK.dll in staging area | ビルド中に SDK のメイン DLL が見つからず、書き換えターゲットがない | SDK がプロジェクトに正しくインポートされ、DLL が Exclude Platform で iOS から除外されていないことを確認 |
Mono.Cecil 関連のコンパイルエラー(Mono.Cecil 名前空間が見つからない) | 未インストールまたはバージョン不一致 | 「前提条件」に従って com.unity.nuget.mono-cecil@1.11.5 を追加し、コンパイラの再解決を待つ |
注意事項
- Unity 2022.3 LTS 以上(Unity 6 を含む)の使用を推奨します。古すぎるバージョンでは Mono.Cecil と IL2CPP の互換性が保証できません。
- iOS Simulator で実行する必要がある場合は、リンクする静的ライブラリに
arm64-simulatorアーキテクチャスライスが含まれていることを確認してください。含まれていないとシミュレータでリンクできません。 - 上記の設定は iOS プラットフォームにのみ影響します。Windows、macOS、Android、Linux のビルド手順には一切影響せず、スクリプトのリネームや Mono.Cecil 依存関係の追加は不要です。