2020 年 8 月、Google Play 開発者サービス(AR)(ARCore)により、一部の 64 ビットデバイスでは 32 ビット専用アプリのサポートが削除されました。残りの 64 ビットデバイスでの 32 ビット専用の ARCore 対応アプリのサポートは、今後の ARCore リリースで予告なく削除される可能性があります。32 ビットデバイスで実行されている 32 ビット専用の ARCore 対応アプリは影響を受けず、引き続きサポートされます。
32 ビット専用(armeabi-v7a
など)を使用した ARCore 対応アプリの場合、64 ビットデバイスに対応する 64 ビット(arm64-v8a
)バージョンを公開せずに、64 ビットデバイスに対応する 64 ビット バージョンでアプリを更新する必要があります。
32 ビット専用の ARCore 対応アプリをアップデートしないと、ARCore セッションの作成に失敗し、影響を受ける 64 ビットデバイスで拡張現実(AR)セッションを開始しようとするとクラッシュする可能性があります。
アプリの AndroidManifest.xml
で android:use32bitAbi="true"
属性を設定すると、アプリは 32 ビット ライブラリのみを使用します。アプリの AR エクスペリエンスはすべて、ARCore を 32 ビットモードで使用しようとします。ただし、一部の 64 ビットデバイスでは、Google Play 開発者サービス(AR)サービスに 32 ビット ライブラリが存在しない場合があります。これらのライブラリがないと、影響を受ける 64 ビットデバイスで拡張現実(AR)セッションを開始しようとすると、アプリで ARCore セッションの作成に失敗し、クラッシュする可能性があります。これは、ネイティブ AR エクスペリエンスと、WebView コンポーネント内の WebXR ベースの AR エクスペリエンスの両方に影響します。
Google Play ストアの 64 ビット要件
前のセクションで説明した ARCore 64 ビット要件は、Android バージョンや API レベルに関係なく、すべての 64 ビットデバイスに適用されます。この要件は 2019 年 8 月 1 日に施行された Google Play の 64 ビット要件とは別個の要件であり、アプリのリリースレベルで評価され、Android 9 Pie(API レベル 28)以降を搭載しているデバイスに配信される APK または App Bundle にのみ適用されます。
ARCore ABI のサポートについて
ARCore を使用すると、以下の Android ABI をサポートするアプリを構築できます。
32 ビット(
armeabi-v7a
)と 64 ビット(arm64-v8a
)アプリ(物理的な ARCore 対応デバイスをターゲットとする)Android Emulator 内で実行される 32 ビット(
x86
)アプリと 64 ビット(x86_64
)アプリ
ARCore 対応アプリをビルドすると、Android ビルドシステムには、アプリがターゲットとする Android ABI 用の 1 つ以上の ARCore ネイティブ ライブラリ(lib/…/libarcore_sdk*.so
)が含まれます。
32 ビット専用の ARCore 対応アプリは、以前は 32 ビットと 64 ビットの両方のデバイスで実行できました。2020 年 8 月、Google Play 開発者サービス(ARCore)は、一部の 64 ビットデバイスでの 32 ビット ネイティブ ライブラリの追加を停止しました。その時点で、影響を受ける 64 ビットデバイスでは、32 ビットの ARCore 対応アプリのみを実行できなくなりました。今後のリリースで、32 ビット専用の ARCore 対応アプリのサポートも、残りの 64 ビットデバイスから予告なく削除される可能性があります。
32 ビット専用の ARCore 対応アプリが更新されていない場合、影響を受ける 64 ビットデバイスで拡張現実(AR)セッションを開始しようとすると、セッションの作成に失敗し、クラッシュする可能性があります。具体的には、次のような影響があります。
ARCore SDK | セッション作成エラーの詳細 |
---|---|
ARCore SDK for Android(NDK) |
ArSession_create と ArSession_createWithFeatures は AR_ERROR_FATAL を返します。
|
ARCore SDK for Android(Java) |
Session コンストラクタの Session(Context) と Session(Context, Set<Session.Feature>) は、FatalException をスローします。 |
Unity 用 ARCore SDK |
ARCoreSession コンポーネント(通常は ARCore Device プレハブにあります)を有効にすると、ARCore による ARCore セッションの作成に失敗し、Session.Status が SessionStatus.FatalError になります。
|
AR Foundation(Unity) + ARCore XR プラグイン |
存在しない 32 ビット ARCore ネイティブ ライブラリを読み込もうとしたときにメインスレッドがクラッシュするため、アプリが AR セッションを開始しようとすると、レンダリングが停止します(画面が黒くなります)。 |
アプリの更新が必要かどうかを判断する
公開したアプリに 64 ビットデバイスのサポートに必要なネイティブ ARCore ライブラリが含まれているかどうかを確認するには:
Google Play Console を開きます。
ARCore 対応アプリを選択します。
アプリのアクティブなリリースを展開して、[ネイティブ プラットフォーム] が 64 ビット(
arm64-v8a
)をサポートしていることを確認します。
64 ビットデバイスをサポートするようにアプリを更新する
既存の 32 ビット専用の ARCore 対応アプリをアップデートして 64 ビット ネイティブ ライブラリを組み込むには:
最新の ARCore SDK を使用するようにプロジェクトを更新します。
アプリをビルドして、Google Play Console で公開します。
Google Play は、アプリが 2019 年 8 月 1 日に有効であった Google Play ストアの 64 ビット要件を満たしていることを確認します。Android のバージョンや API レベルに関係なく、ARCore 対応アプリがすべての 64 ビットデバイスで 64 ビット(arm64-v8a
)をサポートするようにする。