Androidアプリ64bit化必須に向けて検証デバイスのABIを調べる方法


Androidアプリ64bit化必須に向けて検証デバイスのABIを調べる方法


https://developer.android.com/distribute/best-practices/develop/64-bit

上記ページのとおり、
2019年8月1日以降、GooglePlayで公開するアプリは 64bitアーキテクチャをサポートする必要があるとのこと。
更には2021年8月1日から64bit版が含まれていないアプリはGooglePlayから排除されるとのこと。

アプリ(apk)を64bit対応することはもちろん、
その後に64bit対応端末できちんと動作するのかを検証する必要があります。

そこで手持ちのデバイスのCPUアーキテクチャーが何なのか、
サポートしているABIは何なのかを調べる方法を以下に掲載します。

※ABIの詳しい内容については以下ページにあります。
https://developer.android.com/ndk/guides/abis#sa

■ABI分類

プラットフォーム 32bitライブラリ 64bitライブラリ
ARM armeabi, armeabi-v7a arm64-v8a
x86 x86 x86_64

■adbコマンドで調べる

  1. USBなどで調べたいデバイスをPC/Macに繋げる
  2. コンソール(ターミナル)を開く
  3. 以下adbコマンドを実行する

$ adb shell getprop ro.product.cpu.abi

実際の実行例
$ adb shell getprop ro.product.cpu.abi
arm64-v8a

これで完了。


とは言え、現存のデバイスは、
ARMであれば、上記結果がarm64-v8aであっても、
下位互換性があるようなので、
armeabi, armeabi-v7aもサポートされるため、
結局のところarm64-v8aがなくても、
動作確認はできてしまう。


// Your app's build.gradle
    apply plugin: 'com.android.app'

    android {
       compileSdkVersion 27
       defaultConfig {
           appId "com.google.example.64bit"
           minSdkVersion 15
           targetSdkVersion 28
           versionCode 1
           versionName "1.0"
           ndk.abiFilters 'armeabi','armeabi-v7a','arm64-v8a','x86','x86_64'
    // ...

app/build.gradle

ためしにAndroidStudioで確認してみる

  1. app/build.gradleを開く
  2. ndk.abiFiltersからarm系('armeabi','armeabi-v7a','arm64-v8a')を外す
  3. 繋いだデバイスの実行を試みる(繋いだデバイスのABIは'arm64-v8a')

Device supports arm64-v8a, armeabi-v7a, armeabi, but APK only supports x86, x86_64
とエラーが表示される

armeabiarmeabi-v7aどちらかが含まれていればエラーは表示されず、正常に動作するため、ABIがarm64-v8aのデバイスで64bitライブラリがなくとも、32bitのライブラリで動作することが分かる