#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コマンドで調べる
- USBなどで調べたいデバイスをPC/Macに繋げる
- コンソール(ターミナル)を開く
- 以下adbコマンドを実行する
$ 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で確認してみる
- app/build.gradleを開く
- ndk.abiFiltersからarm系('armeabi','armeabi-v7a','arm64-v8a')を外す
- 繋いだデバイスの実行を試みる(繋いだデバイスのABIは'arm64-v8a')
Device supports arm64-v8a, armeabi-v7a, armeabi, but APK only supports x86, x86_64
とエラーが表示される
armeabiかarmeabi-v7aどちらかが含まれていればエラーは表示されず、正常に動作するため、ABIがarm64-v8aのデバイスで64bitライブラリがなくとも、32bitのライブラリで動作することが分かる