LoginSignup
0

posted at

updated at

【Unity】Xcode14へのアップデート対応

はじめに

macOSおよびXcodeは定期的にバージョンアップの必要があります。
今回、macOSのアップデートに伴いXcodeをXcode14にアップデートしたところ
コマンドラインからビルドする際に問題が発生したためその時の対応をまとめます。

環境

  • macOS Monterey
  • Unity 2019.4.26f1

アプデ後に発生した問題

当環境ではiOSビルドをMac上でコマンドラインから行っているのですが
アプデ後、iOSアプリをArchiveしようとした際に

does not contain bitcode.とエラーがでてipaファイルが作成できなくなりました。

原因を調べたところ以下のような記事を発見。

iOSアプリのArchiveでdoes not contain bitcodeと言われる解決方法
Xcode14からBitcodeオプションは非推奨になった

要はXcode上の設定で
「Build Settings > Build Options」の「EnableBitcode」が「Yes」になっているとエラーになるようでした。
image.png
こちらを「No」に変更すれば、Xcodeから「Archive」→「DisrtibuteApp」を行うことで
ipaファイルのエクスポートは一応可能になりました。

ですが、これではコマンドライン実行でipaファイルの作成まで一発で完了できないので
(Unityエディタ上でXcodeプロジェクトビルド、Xcodeから「Archive」を行う必要がある)
Unity上で対応を行うことにしました。

対応

Unityの「OnPostprocessBuild」を使用してビルド後にXcodeプロジェクトの設定を書き換えて
コマンドライン実行でipaファイルの作成まで通るようにしました。

具体的なコードは以下のようになります。

  // OnPostprocessBuild:ビルドの完了後のコールバック処理として実行される
  public void OnPostprocessBuild(BuildReport report) {
    string projectPath = PBXProject.GetPBXProjectPath(report.summary.outputPath);
    setBitCode(projectPath);
  }

  // Bitcodeのパラメータをセット
  private void setBitCode(string projectPath){
    PBXProject localPbxProject = new PBXProject();
    localPbxProject.ReadFromFile(projectPath);

    // Main
    string target = localPbxProject.GetUnityMainTargetGuid();
    localPbxProject.SetBuildProperty(target, "ENABLE_BITCODE", "NO");

    // ビルドターゲットが複数ある場合はそちらの設定も変更する

    localPbxProject.WriteToFile(projectPath);
  }

上記の処理を追加することによりビルド後のxcworkspace上で
「EnableBitcode」の設定が自動で「No」になります。

最後に

以上の対応でコマンドラインビルドからのipaファイル作成が可能になりました。
ビルドターゲットを指定する部分は環境に応じてターゲットの追加が必要になるかと思います。

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
What you can do with signing up
0