2019年8月1日からGoogle Playで公開するアプリは64bit対応が必須になったらしいです。
Googleが以前から告知していたことや、ちょっと前にapkアップロード時に警告が出るようになってきたこともあり、ちょっと前にUnityで作ったAndroidアプリを64bit対応にする方法について書きました。
この対応をしておけば大丈夫だと思っていたのですが、いざ2019年8月1日を過ぎてからapkをアップロードしてみたら、64bit対応のアプリをアップロードしているはずなのに32bitアプリだから64bit対応アプリにしてくださいというエラーが表示されました。
一応解決できたのでメモとして残しておきたいと思います。
Unity Version: 2018.3.6f1
64bit対応のAndroidアプリをアップロードしたらエラーになる
上記で紹介した記事の手順でUnityから64bit対応のapkを出力したところ、下記のようなエラーが表示されました。
最初はコンソール側の障害か何かしらのエラーが出てるだけかなと思ったのですが、時間を置いてみたり、ブラウザを再起動しても同じエラーが出るだけでした...
エラー
このリリースは Google Play の 64 ビット要件に準拠していません
以下の APK または App Bundle は 64 ビットのデバイスで利用できますが、32 ビット向けネイティブ コードしか含まれていません。6
アプリには 64 ビットと 32 ビットのネイティブ コードを含めます。Android App Bundle 公開形式を使用して、各デバイスのアーキテクチャが自動的に必要なネイティブ コードだけを受け取るようにします。これにより、アプリ全体のサイズが増大することを回避できます
64bit要件に準拠していないというエラーが表示されているのですが、アップロードしたapkを確認してみると、
アーキテクチャに「arm64-v8a」が含まれているし、apkをzip化して解凍してみても64bit対応のアプリであることは確認できました。
64bit対応アプリのはずなのに32bitアプリとして認識される謎の現象が発生してしまいました。
64bit対応版アプリをアップロードしても32bitアプリとして認識される場合の対処法
なぜこんな状況になっているのか色々調べたり試したりしたところ、以下の記事を発見しました。
https://forum.unity.com/threads/unity-and-google-play-64-bit-requirement.634936/
こちらによると、この問題はターゲットアーキテクチャーにx86をチェックしている場合に発生する問題で、x86を除外すると解決できるとのことでした。
上記を参考に、UnityのBuildSettingの「Target Architectures」のx86のチェックを外したところ、エラーがでず64bit対応のapkとしてGoogle Play Consoleに認識されました。
この設定の副作用としては、x86の端末はアプリをインストールできなるっていう問題があります。
でも調べたところ、x86はだいぶ古めのアーキテクチャーなので除外しても対象から外れる端末は少ないようなので、一応問題なさそう。(僕のアプリの場合は5端末ぐらい切り捨てることになった)
x86の端末を切り捨てることにはなりますが、64bit対応版じゃないとアプリ公開できないので現状の手段としてはこの方法しかなさそうです。
(僕の使っているUnityバージョンは2018.3.6f1なので、もしかしたらUnityのアップデートをしたら64bit対応向けの設定が増えるのかも。今は色々開発中なのでまだ上げられませんが時期をみてアップデートしてみたいと思います。)
関連: