Unity-iOS 公開の基本プロセスでは、まず Unity で Xcode プロジェクトをエクスポートし、次に、ライブラリ、フレームワーク、またはその他のリソースのインポート、署名やその他のコンパイル設定の設定、コンパイル スクリプトの追加など、Xcode プロジェクトで IOS パッケージ化のいくつかのプロセスをセットアップします。 、 等々。
Xcode をエクスポートした後に毎回これらの操作を手動で実行すると、時間が無駄になり、エラーが発生しやすくなります。現在、Xcode プロジェクトを自動セットアップする方法は主に次のとおりです。
- Unity は、Xcode プロジェクトをエクスポートするときに、PostProcessBuild コールバックを通じて Xcode プロジェクト設定を設定します。
- もう一つの方法は、Rubyのライブラリxcodeprojを通して設定する方法で、Unityプロジェクトとは別に、xcodeプロジェクト専用に設定する方法です。
Xcode プロジェクトを自動的にセットアップした後、xcodebuild コマンドを使用して Xcode プロジェクトを自動的にビルドし、ExportOptions.plist を使用して ipa または公式パッケージを自動的にリリースするプロセスを構成できます。このような一連のプロセスを通じて、Xcode のパッケージ化プロセス全体が自動化されます。この記事では主に Xcode プロジェクトの自動設定について説明しますが、必要に応じて ipa をエクスポートするプロセスについては後ほど説明します。
Xcodeプロジェクト構成ファイル
自動ビルドについて説明する前に、Xcode プロジェクト構成ファイルについて簡単に見てみましょう。Unity プロジェクトが CocoaPods を通じて SDK をインポートする場合は、2 つの xcodeproj を含む *.xcworkspace を開く必要があります。
- Unity-iPhone は Unity によってエクスポートされたプロジェクトです
- Pods は、pod install を使用してインストールしたポッド プロジェクトです。
フレームワークの署名やその他の設定の設定など、Pod プロジェクトの設定を行う必要がある場合、Unity のコールバックを使用する方法はありません。ポッドのインストールは、xcode プロジェクトの作成後に PodFile でのみ生成できます。 Unity によってエクスポートされ、Pod プロジェクト中に設定するか、Ruby ライブラリ xcodeproj を使用して均一に設定します。
*.xcodeproj 内の *.pbxproj ファイルには、すべての Xcode プロジェクト設定が記録されます。Unity-iPhone.xcodeproj の下にある project.pbxproj ファイルを開いて、すべてのプロジェクト設定を表示できます。
pbxproj プロジェクト構造の分析
Xcode は rootObject 値を読み取り、プロジェクトの uuid を取得し、プロジェクトから始まるプロジェクト構成全体を解析します。このファイルは分かりやすく、コメントも明確なので、後で値を設定する必要がある場合に参照するだけで済み、非常に便利です。
isa は型と同等なので、xcodeprojで変更されたインターフェイスを簡単にクエリ できます。
自動セットアップを実装する一般的な方法
何を変更するかを決定する
自動ビルドの前提は、ビルドを手動で構成できることです。これは、自動ビルド情報を構成する必要がある場所を理解するのに非常に便利です。たとえば、ビルド フェーズでシェル スクリプトを追加したい場合は、手動で追加できます。最初に Xcode に入力し、次に渡します。 git 比較ツールは、変更された内容を確認するのに非常に便利です。
スクリプト オブジェクトが PBXNativeTarget の buildPhases 配列に追加されたことは簡単にわかります。この方法は初心者にとって非常に簡単で直接的であり、薬は病気を治すことができます
機能を実装するための適切なツール (インターフェイス) を見つける
xcodeprojを使用する
require "xcodeproj"
# @添加shell脚本
# 打开项目
project_path = "Unity-iPhone.xcodeproj"
# PBXProject
project = Xcodeproj::Project.open(project_path)
#@PBXNativeTarget
$pbx_native_target = project.targets[0]
build_phases = $pbx_native_target.build_phases
# 生成一个uuid
uuid = project.generate_uuid
puts "uuid===>" + uuid
# 设置脚本属性
script = Xcodeproj::Project::Object::PBXShellScriptBuildPhase.new(project,uuid)
script.name = "test shell"
script.shell_path = "/bin/sh"
script.shell_script = "ruby test.rb"
script.run_only_for_deployment_postprocessing = "0"
script.always_out_of_date = "1"
# 插入位置
build_phases.insert(3,script)
# 保存项目
project.save
コメントを通じてシェルスクリプトのタイプが PBXShellScriptBuildPhase であることがわかり、このオブジェクトを作成してシェルスクリプトを追加でき、内部の値は手動設定後に設定できます。
Unity コールバック メソッドを使用して設定します
PBXProject->AddShellScriptBuildPhaseでスクリプトを追加しますが、この設定方法はrubyを使用するほどではありません。したがって、可能であれば、xcodeproj ライブラリを使用してプロジェクトを構成することをお勧めします。