🍏
Unity as a LibraryにおいてiOSビルドが通らない
エラー内容
iOSのXCodeビルドで失敗する。
Could not build the precompiled application for the device.
Error (Xcode): B(l) ARM64 branch out of range (-137152180 max is +/-128MB): from
___Il2CppComObject_Finalize_m720B2062F661A0770A32D24B731AD4AFE314A5CD (0x08310048) to
__Z40il2cpp_codegen_il2cpp_com_object_cleanupP15Il2CppComObject (0x000439C4) in
'___Il2CppComObject_Finalize_m720B2062F661A0770A32D24B731AD4AFE314A5CD' from
/XXXX/build/ios/Debug-iphoneos/libGameAssembly.a(tyjo
7lovil21.o) for architecture arm64
解決策
Unity側設定の見直し
iOSのBuild Profile(Unity2023以前ではProject Settings/Player/Other Settings)を開き、以下の設定をする。
IL2CPP Code Generation
- Optimize for code size and build time
Strip Engine Code
- 有効
Managed Stripping Level
- High
これらの設定を行うことでIL2CPPビルドにおいて最適化が行われ、リンカが飛び先の距離制限を超えないようになるのだと思う(全然理解はできていない)
設定を見直したら再ビルドして確認する。
設定の見直しをしても改善しない場合
Releaseビルドを試す
まずはReleaseビルドを試す。Development BuildやScript Debuggingはオフにし、XCodeでもReleaseビルドにする。
Flutter x Unity as a Libraryの場合はflutter run --releaseで実行する。
Releaseビルドでも通らない場合、別の問題の可能性がある。
Unity6でBuild Profileを利用しているのにも関わらずProject Settingsから設定を変更していないか?
これは私が実際にハマったことだが、設定を反映したのに改善が見られず悩んでいたらUnity2022時代の癖でBuild Profileの設定ではなくProject Settings(Player Settings)の設定の方を変えていた、ということがあった。
いずれも解決しない
是非コメントで情報共有していきましょう。また、この問題は意外とChatGPTも答えてくれます。


Discussion