開発者じゃなくてもたった10秒で保安の心配無用! 

デモのお申し込み

[TECH] 新しい Google Play 64 ビット サポート ポリシーへの準備

Google Play 64 ビット サポート – 2019 年 8 月 1 日から有効になる Google Play 64 ビット サポート ポリシーの詳細を確認し、準備すべき事項を学びます。

 

[TECH] 新しい Google Play 64 ビット サポート ポリシーへの準備

 
最近変更された Google Play ポリシーにより、2019 年 8 月 1 日以降に登録された新しいアプリとアプリのアップデートには 64 ビット バージョンが付属する必要があります。
 
必要な情報は次のとおりです。
 
[ Google の 64 ビット要件にアプリを対応させる ]
 
2019 年 8 月 1 日以降:
- ネイティブ コードを含むすべての新しいアプリとアプリのアップデートは、Google Play にアップロードするときに 32 ビットに加えて 64 ビット バージョンを提供する必要があります。
- 延長期間の対象: Google Play は、2021 年 8 月まで、Unity 5.6 以前を使用する既存のゲーム サービスに対して 32 ビット専用のアップデートを許可し続けます。

2021 年 8 月 1 日から:
- Google Play は、64 ビット対応デバイスで 64 ビット バージョンがないアプリの提供を停止し、そのため、それらのデバイスは Play ストアで利用できなくなります。(Unity 5.6 以前のバージョンで作成されたゲームを含む)

- これらの要件は、以下のサービスには適用されません。
現在 64 ビット コードをサポートしていないフォーム ファクターである Wear OS または Android TV を明示的にターゲットとする APK またはアプリ バンドル
Android 9 Pie 以降で動作するデバイスに配布できない APK またはアプリ バンドル。
 

従来の 64 ビット Android システムは、32 ビット互換システムで 32 ビット モードで動作してきましたが、64 ビット用のネイティブ ダイナミック ライブラリ (.so) は存在しません。

64 ビットの高性能デバイスでも 32 ビット メモリ システムで動作できたため、実効的な動作が失敗した結果のポリシーと思われます。

2019 年 8 月 1 日より、Unity 5.6 以下の既存の登録エンジンを利用するサービスを除くすべてのアプリに上記のポリシーが適用されます。

これらのポリシーの結果、2019 年 8 月 1 日以降、アプリを更新したり、Play ストアで新しいアプリを登録したりする際に、次の項目を満たす必要があります。

 
- アプリ パッケージにネイティブ ダイナミック ライブラリを含むアプリには、バージョン 64 が含まれている必要があります
 
提供しているアプリがネイティブ ダイナミック ライブラリを使用しているかどうかを確認するには、次の方法で確認できます。
 
1. APK または AAB ファイルを Zip で開きます
2. 「lib」ディレクトリが存在するかどうかを確認します。(AAB の場合は、base/lib を確認します。)

lib の下部に「armeabi-v7a」や「armeabi」などのディレクトリが存在し、その中に .so ファイルが存在する場合、そのアプリはネイティブ ダイナミックを使用しているアプリであると判断できます。

lib ディレクトリの下部に「arm64-v8a」が存在し、ディレクトリの下部にある「armeabi-v7a」や「armeabi」などのファイルが「arm64-v8a」にある場合、該当するアプリは 64 ビットをサポートするアプリであると判断できます。

また、上記の作業を実行したときに「lib」フォルダーが存在しない場合は、アプリがネイティブ ダイナミック ライブラリを使用していないと判断できるため、このポリシーについて心配する必要はありません。

アプリ パッケージに「arm64-v8a」フォルダーが存在する場合、以下の手順で、アプリが実際に 64 ビット デバイスで 64 ビット モードで実行されているかどうかを判断できます。

1. 接続されているデバイスが 64 ビットかどうかを確認します。
  - 進行中の adb shell getprop ro.product.cpu.abi の最終値が「arm64-v8a」の場合、デバイスは 64 ビットです。
2. アプリのソースコードに Build.SUPPORTED_ABIS (API レベル 21 以上) と Build.CPU_ABI (API レベル 21 以下) を追加して、フィールドの最終値が 'arm64-v8a' であるかどうかを確認します。
 

アプリの実行時に 'arm64-v8a' の場合、アプリは現在 64 ビットをサポートしており、このポリシーの要件をすでに満たしていることを意味します。

ただし、アプリが 64 ビットをサポートしていないことが判明した場合は、64 ビット用にコンパイルされたネイティブ ダイナミック ライブラリを追加する必要があります。

このポリシーにより、多くのアプリ サービスが 64 ビット モードを準備するようになり、64 ビット用の新しいネイティブ ダイナミック ライブラリが追加されるにつれてアプリ パッケージの容量が増加するという現象が発生しました。これに対応して、いくつかのアプリ サービスも AAB (Android App Bundle) に切り替えることでこの問題を解決しようとしています。

 
google play 64bit timeline
 

IL2CPP の場合、ユーザーが開発したソース コードは、そのままの MONO モードでは .dll という単一の形式で「アセット」内に存在します。一方、UNITY は IL2CPP モードを使用して 64 ビットをサポートし、パッケージの「lib」ディレクトリの下部にある libil2cpp.so というネイティブ ダイナミック ライブラリ ファイルの形式で提供されます。

libil2cpp.so ファイルはネイティブ ダイナミック ライブラリであり、32 ビットと 64 ビットの両方を必要とするため、このポリシーに従う必要があります。アプリのビルド時に、アプリ パッケージの容量が大きくなる場合があります。

この問題に対処するために、Android App Bundle (AAB) が広く使用されています。Play ストアからアプリをダウンロードするために使用しているデバイスに適したネイティブ ライブラリとリソースのみをインストールできるようにすることで、ダウンロード速度が速くなり、サイズが小さくなるためです。

AAB に関するさらなる技術情報については、次の投稿で説明します。


LIAPP は 64 ビット システムで安定したセキュリティ機能をサポートします

LIAPP は最高のサービスを提供します。