I2 LocalizationというassetをimportしたUnity2019.4のプロジェクトで作られた自前のアプリをXcode12.4でビルドして、iOSの言語設定をアラビア語などに変更してからiPhoneで起動したところ強制終了しました。
強制終了の原因を調べるべく、XcodeとiPhoneをUSBケーブルで繋いでビルドしログを見ながらiPhone起動してみました。
すると、以下のようなエラーで強制終了していました。
1 2 3 4 5 6 7 8 9 |
Uploading Crash Report ArgumentOutOfRangeException: Not a valid calendar for the given culture. Parameter name: value at System.Globalization.DateTimeFormatInfo.set_Calendar (System.Globalization.Calendar value) [0x00000] in <00000000000000000000000000000000>:0 : at NCMB.Internal.NCMBConnection..ctor (System.String url, NCMB.Internal.ConnectType method, System.String content, System.String sessionToken, NCMB.NCMBFile file, System.String domain) [0x00000] in <00000000000000000000000000000000>:0 : System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs) (Filename: currently not available on il2cpp Line: -1) |
I2 Localizationをプロジェクトから外すと強制終了しなくなるので、原因はI2 Localizationのimportであることは確かなのですが、回避方法が全く分かりませんでした。
いろいろググったところ、こちらのフォーラムにそれらしき解決策が載っていたので試したところ、無事に回避できました!
link.xmlというファイルを作って以下のように記述し、Unityプロジェクトのどこでも良いのでimportしてビルドします。(私はAssetフォルダ直下に置きました)
1 2 3 4 5 6 7 |
<linker> <assembly fullname="mscorlib"> <namespace fullname="System.Globalization" preserve="all"/> </assembly> </linker> |
link.xmlについてはUnityのドキュメントにも載っていました。
これでI2 Localizationを使用しつつ、iOSの言語設定をアラビア語やタイ語にしてもアプリは強制終了しなくなりました!
ピンバック: I2 Localizationの使い方メモ | あるむのゲーム工房