はじめに
機会はそんなに多くありませんが、ときどきiOSのみで発生するバグに遭遇することがあります。
そんな時は実機デバッグで解析するしかありませんが、いつもやり方を忘れるので備忘録として残しておきます。
参考資料
はじめにの項目に入れるくらい、おかずさんの記事を見た方が良いと思ったのでこちらに置かせていただきます。
もっと詳しく見たい方はこちらを見ましょう。
開発環境
- iMac(Sonoma 14.5)
- Xcode 15.3
- iPhone 15
- UE 5.3.2
プロジェクトは弊社が開発しているMelifeを使います。
前提
- Xcodeがインストールされている
- Apple Developer Programに登録してあり、iOSパッケージ化ができること
手順
1. 下準備
1.1. ModernXcodeをfalseに変更
ModernXcodeをfalseにします。
普段はWindowsのリモートビルドでiOSのパッケージ化をしているため、プロジェクト全体でModernXcodeはfalseに統一している名残ですね。(逆にModernXcode = trueでデバッグするやり方知らないなんて言えない)
Launcher版の方は/Users/Shared/UnrealEngine/UE_5.3
から変更してください。
[/Script/MacTargetPlatform.XcodeProjectSettings]
bUseModernXcode=false
1.2. xcworkspaceの作成
次にxcworkspaceを作成します。
Windowsの場合は.uprojectを右クリックしてGenarate Visual Studio project files
を実行すればソリューションファイルが作成されました。
Macでもそうなのかな?と思って同じことをしても作成されない・・・
しかもなんで2つあってどっちも機能してないねん・・・
なのでターミナルから作成します。
/Engine/Build/BatchFiles/Mac/
に移動し、次のコマンドを実行します。
sh GenerateProjectFiles.sh -project="/{プロジェクトのパス}/{プロジェクト名}.uproject" -game
終わったらプロジェクト名.xcworkspaceが作成されているはずです。
1.3. MacにiPhoneを接続
接続すると自動でデバイスサポートが作成されます。
ターミナルで次のコマンドを実行するとインストール済みのデバイスサポート一覧が表示されるので、自分のiPhoneのものがあるか確認してください。
ls ~/Library/Developer/Xcode/iOS\ DeviceSupport/
私の場合はiPhone15でiOS18.1です。
接続したまま次に進みます。
2. XcodeからEditorを起動し、パッケージ化
プロジェクト名.xcworkspaceをダブルクリックし、Xcodeを起動します。
Schemeはプロジェクト名Editor
、対象をMy Mac
にして実行します。
Editorが起動したら、プロジェクト設定からdSYMを生成する設定をオンにします。
ついでにログ確認用のPrintStringをレベルブループリントに配置しましょう。
パッケージ化の設定をしてIOSのDevelopでパッケージ化します。
もしくは接続したiPhoneでQuick LaunchでもOKです。
Shippingでデバッグしたい場合はプロジェクト設定のBuild ConfigurationをShippingにしてパッケージ化してください。
ただしPrintStringはログに出てこなくなります。
以降の手順は一緒です。
Quick Launchの場合は完了するとiPhoneにアプリがインストールされています。
Xcodeの実行ボタンの左にある停止ボタンを押してEditorを閉じます。
3. Xcodeからアプリを起動
XcodeからiPhone上でアプリを起動するためのSchemeを追加します。
New Schemeを選択
Scheme名はわかりやすい名前に
Targetはプロジェクト名のものを選択
作成したら今作成したSchemeでEdit Schemeを選択します。
Executableを先ほどパッケージ化した時に作成された/Binaries/IOS/Payload/
のアプリにします。
Build Configurationはデフォルトのまま(Debug)で問題ないと思いますが、他のに変えた影響はわかりませんでした。(知ってたら教えてください)
対象をiPhoneにします。
Product > Perform Action > Run Without Buildingを実行したらiPhoneにアプリがインストールされ、Consoleにログが流れ始めます。
先ほど仕込んだPrintStringがでました。
まとめ
UE5でのiOSデバッグの記事がなかったので書きましたが、UE4の時とほとんど変わってなくてびっくりしました。
UEでモバイル開発もっと流行って欲しいです。
参考記事