2019 年 8 月 1 日以降:
- ネイティブ コードを含むすべての新規アプリとアプリのアップデートを Google Play で公開する際に、32 ビット版に加えて 64 ビット版の提供が必須になります。
- 延長期間: Unity 5.6 以前を使っている既存のゲームの場合、Google Play は 2021 年 8 月まで 32 ビットのみのアップデートを受け入れます。
Googleによると2019年8月1日以降、Google Playで公開するアプリには64bit対応が必須になるそうです。
最近Google Playにアップしたアプリでも、64bit対応を勧める警告が表示されるようになってしまったので、今のうちに対応しておくことにしました。
今回は、Unityで作ったAndroid版アプリの64bit対応に関する備忘録です。
Unityで作ったAndroidアプリを64bit対応させる場合やるべきこと
64bit対応と言っても、やるべきことはそんなにありません。
Unityで作ったAndroidアプリを64bit対応にする場合は、
「Build Settings」>「Other Settings」>「Configuration」>「Scripting Backend」を
「Mono」から「IL2CPP」に変更して、「Target Architectures」の「ARM64」にチェックを入れてビルドすればOKです。
ただし、IL2CPPではビルド時にNDKが必要になるので、NDKをインストールしてUnityでパス設定しないとエラーが出てビルドできません。
あとNDKをインストールする際の注意点として、Unityに指定されたNDKバージョンをインストールすることが重要です。
対応していないNDKバージョンだと、ビルドエラーが発生したり、ロケーションパスが通りませんでした。(僕の場合はNDK r16bが必要でした)
以上の設定でビルドして再度Google Playにapkをアップロードしたら64bit未対応の警告が消えました。
【追記】プラットフォームごとに処理が分かれている場合に注意すべきこと
ちなみに、iOSとAndroidで処理が分かれている場合などは、64bit対応時のビルドで以下のようなエラーが出る場合があります。
この場合は、指定されたfunctionがiOSのネイティブコードのみに有効なコードが含まれている場合が多いので、「#if UNITY_IOS」で処理をちゃんと分けておいた方が良さそうです。
error: undefined reference to
参考:
Android向けIL2CPPビルド失敗時に2点考えられること - 渋谷ほととぎす通信
Androidの64bit対応はこれから必須になるらしいので、早めに慣れておこうと思います。
関連: