UnityのDeviceビルドをSimulatorビルドに換装する
概要
適宜Simulator版とDevice版を動かし分けたい。
具体的に言うと、
・Simu版をサーバで動かしてCI
・そこからDevice版を実機転送で動かして遠隔実機CI
などがしたい。
ので、片方からもう一方が作れないか試してみた。
特にDevice版からSimulator版、その後またDeviceに戻す、というのをやってみた感じ。
差異
DeviceビルドとSImulatorビルドの差異は、下記のフォルダにのみある。
Libraries/
Assembly-CSharp-firstpass.dll.s
Assembly-CSharp.dll.s
Assembly-UnityScript-firstpass.dll.s
Assembly-UnityScript.dll.s
mscorlib.dll.s
Data/Managed/
Assembly-CSharp-firstpass.dll.mdb
Assembly-CSharp.dll.mdb
Assembly-UnityScript-firstpass.dll.mdb
Assembly-UnityScript.dll.mdb
PROJECT.xcodeproj/
project.pbxproj
ここの特定の設定項目を変える必要がある。(ビルド自体にも影響)
Libraries/以下
フォルダごと入れ替える事で解決できる。
Data/Managed/以下
フォルダごと入れ替えることで解決。
実はアプリが起動するまで全く触られないらしく、無くても動く。
無い場合は起動後に落ちる。
その際のエラーは
Failed to load AOT module 'Assembly-CSharp-firstpass' while running in aot-only mode.
PROJECT.xcodeproj/の内容変更
を変更する前に、タブでDevice/Simulatorとかが選べるようにする。
プロジェクトアイコン > Build Settings >
SupporterPlatform で、iOSを選択。
独自に文字書いてあるのを変更。
Scheme から、Simulatorが選べるようになるはず。
加えて、一番大事な、
OTHER_CFLAGS = -mno-thumb
を、
OTHER_CFLAGS = -DTARGET_IPHONE_SIMULATOR=1
に変える。
逆
(SimulatorをDeviceにするのではなく、
Deviceを一度Simulator化したものを再度Device化する話。)
LibraryとDataを変更、
OTHER_CFLAGS = -DTARGET_IPHONE_SIMULATOR=1
を、
OTHER_CFLAGS = -mno-thumb
に戻す。
加えて、Debug Informationも弄る必要が有る
Debug Information Format = DWARF with dSYM File
になっているのを、
Debug Information Format = DWARF
に変えるとOK。
最後の Debug Information Format 設定は、はじめから設定してしまっても良いかもしれない。