RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

モバイル制作 Unity(C#)

UnityでiOS版をリリースする際に、FirebaseとXCode16を組み合わせると起こるビルドエラー「unsupported option ‘-G’ for target ‘arm64-apple-iosXX.X’」への対応

投稿日:

はじめに

こちらのポストがワイにも役に立ったので、「実際どうするの?」ということも含めて書いておこうと思う。

やること

・UnityのAsset/EditorにXcodeSetPodsSigning.csを作る。
・以下のコードをコピペする。
・UnityのiOS版をビルドしなおす。
・MacのXcodeでビルドする。(特別な設定は不要)

コード

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEngine;

public class XcodeSetPodsSigning : MonoBehaviour
{
    [PostProcessBuild(45)]
    public static void FixPodFile(BuildTarget buildTarget, string buildPath)
    {
        // iOS版のみ
        if(buildTarget != BuildTarget.iOS)
        {
            return;
        }

        // PodFileに記述
        using (StreamWriter sw = File.AppendText(buildPath + "/Podfile"))
        {
            sw.WriteLine("post_install do |installer|");

            // pod error(-G)対応
            sw.WriteLine("installer.pods_project.targets.each do |target|");
            sw.WriteLine("if target.name == 'BoringSSL-GRPC'");
            sw.WriteLine("target.source_build_phase.files.each do |file|");
            sw.WriteLine("if file.settings && file.settings['COMPILER_FLAGS']");
            sw.WriteLine("flags = file.settings['COMPILER_FLAGS'].split");
            sw.WriteLine("flags.reject! { |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }");
            sw.WriteLine("file.settings['COMPILER_FLAGS'] = flags.join(' ')");
            sw.WriteLine("end\nend\nend\nend");

            // General設定
            sw.WriteLine("installer.generated_projects.each do |project|");
            sw.WriteLine("project.targets.each do |target|");
            sw.WriteLine("target.build_configurations.each do |config|");
            sw.WriteLine("config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'");
            sw.WriteLine("end\nend\nend");

            sw.WriteLine("end");
        }
    }
}

原因と対策

iOSのBoringSSL-GRPCで以前使っていた「-GCC_WARN_INHIBIT_ALL_WARNINGS」というフラグが、XCode16でどうやら使えなくなったもよう。
最新版だと「-G」と誤認識してしまうみたい。
そのため、上記コードで対象の部分を消してしまう・・・はず。

補足事項

WindowsのUnityを開発して、Macにもっていく人(まさにワイ)向けの手順を以下URLで公開中。
UnityでiOS版をリリースする際に、Firebaseを使っていると起こるビルドエラー「Undefined symbols for architecture arm64」への対応

-モバイル制作, Unity(C#)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【Flutter】ToDoアプリの作成

StatefullWidgetの状態管理、データの受け渡し、デバイスへのToDoリスト保存の解説がなかったので例となるアプリを作成しました。 こちらのアプリを応用すれば、大体のアプリが作れるのではない …

【Flutter】(初心者向け)カメラ・動画アプリを理解しながら作る

今回の記事はモバイルのカメラ&動画撮影アプリをまず動かしてみて、何を実装しているのか解説・理解しながら、作成を進めるコンセプトで進めていきます。 なぜなら、この記事の著者はとあるきっかけからモバイル( …

C#(Unity) 2D障害物ゲームのマップをインスペクタから作成・設定する例

知りたい方がいらっしゃったので書いてみました。 インスペクタから設定できると、データベース不要で簡単に複数マップを作成・管理できるところが良いところだと思います。 設定ファイルの作成 MapSetti …

Unity 2022.3.18f1 エラー「FSBTool ERROR: Internal error from FMOD sub-system.」の対策

FSBTool ERROR: Internal error from FMOD sub-system.と出て、音声ファイルを読み込めない時の対策です。 今回起こったのはMP3ファイルだったので、ファイ …

【Flutter】動画配信アプリの作成(2022年版・無料)

はじめに とあるきっかけから動画撮影・個別配信アプリを作りたいなということでいろいろなサイトで調べていました。 が・・・配信アプリ作成がうまく行かない。 例) ローカルネットワークでライブ配信する(2 …