なんとなく選択していた OpenGApps の「Platform」.
この「ARM」とか「x86」ての結局何なのか.
調べてみました.
概要
「ABI (Application Binary Interface)」とは, Android のプロセッサーにセットされた命令の種類で, mylib.so のようなネイティブCライブラリをアプリに組み込むときにABIを特定してコンパイルする必要がある.
app/libs/armeabi/mylib.so
app/libs/x86/mylib.so
大きく3つのカテゴリに分けられる.
ARM
- armeabi
- armeabi-v7a
- arm64-v8a
X86
- x86
- x86_64
MIPS
- mips
- mips64
それぞれのカテゴリ内は下のもののほうが新しく一般的に下位互換なので, arm64-v8 では armeabi-v7a 向けのアプリを使うことができる.
armeabi-v7a が多いが最近は arm64-v8a が増えてきている雰囲気.
Arm Arm64 x86 Selection Guide for Android -iTechify
Genymotionなどのエミュレータ や ASUS Zenphone 2 は x86 らしい.
端末のABIを特定する
コマンドラインから眺めてみたりしてましたが,
shell@mako:/ $ cat /proc/cpuinfo
Processor : ARMv7 Processor rev 2 (v7l)
processor : 0
BogoMIPS : 13.53
...
こっちの方が良さげ.
shell@mako:/ $ getprop | grep cpu
[ro.product.cpu.abi]: [armeabi-v7a]
[ro.product.cpu.abi2]: [armeabi]
[ro.product.cpu.abilist]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: []
How to identify the android device is 32-bit or 64-bit ? | Intel® Software
コード内で取得するにはそれぞれ以下で.
Build.CPU_ABI | Android Developers
Build.CPU_ABI2 | Android Developers
Build.SUPPORTED_ABIS | Android Developers
まとめ
私のAndroidには「ARM」を選択しますわ!