Google

2015年6月9日火曜日

Unity4.6で64bit版の審査

備忘録のおはなし。

Unity4.5.xで安定動作するiOSアプリをバージョンアップ申請したら、大分時間が経ってからリジェクトされてしまった。

確か最後に申請したのが5月下旬ごろ。
リジェクト食らった時点で6月に入ってるから、もう32bit版は受け付けてくれない。
こんなに遅れたのはもしかして、アップル審査チームが64bitへの移行騒ぎでカツカツだったのかも知れない。
が、あータイミング悪すぎ、、、。

本来こういう記事は事前予測の上6月前に書くべきなんだろうけど、古いプロジェクト変換の備忘録のために記事を作っておく事に。

さて、32bit版のUnityプロジェクト(実は自作プラグイン込み)を移行せねば。
Unity5にするのも時間が掛かりそうでお客さんを待たすのも何だったしで、とりあえずUnity4.6.5p1を準備し、プロジェクトを読み込んでみた。
プロジェクト自体の互換性はあるので、ビルドを64bitにすべく設定変更開始。

Unityのプロジェクト設定を開いて、Configrationグループを見つける。
そこからScripting BackendをMono.2.xからIL2CPPに変更。




こうしないと64bitの追加が選択肢に入らない。
同、ArchitectureがあるのでそれをUniversalに。
armv64単体だと古い機種が動作不可能になるので、これは仕方なし。


これでBuildし、XCodeプロジェクトを生成。
予想通り、今までの生成時間より体感で倍近く掛かるようになった。

生成されたXCodeプロジェクトを開いたら設定に移動。
TARGETからUnity-iPhoneを選択し、Build SettingsタブからArchitecturesグループを探す。
既に存在するStandard Architecturesにすればarmv7, arm64のファットバイナリにしてくれる。
後は同グループのBuild Active Architecture OnlyをReleaseだけNOにする。



うちの都合ではあるものの、ターゲットが7.0以降という事情があるので、GeneralタブからDeployment infoグループを探し、Deployment Targetを7.0である事も確認。
Unity側でターゲット設定してあるから今回は特に問題なし。



さあこれで後は実機で動作実験、、、と思ったらこんな問題が待っていた。

 1. 自作プラグインで実装していたauto release廻りの処理が変更に
 2. OnGUIで出す座標が@2xのような等倍での指定になっていた
 3. 自作プラグインで別のUIViewを親子関係付けする際、UnityViewの生成タイミングが変わったらしく、最初に取得して使いまわそうとしたらぬるぽだった(必要時に取るだけでOKだった)

2. はデバッグ出力用なのでどうでも良かったのだけど、1. はUnityの内部でクラッシュしてしまい、一瞬焦ってしまった。
宜しくないコードの修正にもなって良かったといえば良かったんですが。
参考にもならんのでしょうが、4.5からの移行で発生したという事の記録なんで、読みに来た人にはお役に立ちませんがご勘弁を。

後はいつもどおりメニューのProductからArchiveし、OrganizerからValidate、Submitでアップロード完了。

こっちはどうにかなったけど、もしかしたらサードパーティでarmv7にしか対応してないライブラリを使っているプロジェクトとか、大変な思いをしてるんじゃないだろうかと勝手に予測。
XCode側のarm64リンケージでエラーが大量に出るはずだし。

で、今回のオチですが、レガシープロジェクトは安定してる時期に切り替えた方がいいという教訓を学べたということで。

0 件のコメント:

コメントを投稿