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分類



■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-v8がなくても、
動作確認はできてしまう。
 

// 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のライブラリで動作することが分かる