日別アーカイブ: 2015年2月10日

Android 5.0 Nexus Player x86 と対応 ABI

Android 5.0 から 64bit CPU に対応しています。
Android で最初の 64bit device は Nexus 9 です。
もちろん上位互換性があり従来の 32bit ARM Native code も実行可能です。
32bit ARM には 2種類の ABI が存在していたので合計 3種類です。

ARMv8A AArch64  arm64-v8a
ARMv7A          armeabi-v7a
ARMV5TE         armeabi

Android 4.4 までは同時に 2種類の ABI に対応することが出来ました。
Android 5.0 以降は上記のように 3つ以上指定可能となっています。

同時に発表された Nexus Player は Nexus 初の Intel CPU (Atom Z35xx)
搭載端末となっています。
OS も Android 5.0 なのですが、残念ながら 64bit (x86_64) ではなく
32bit (x86) で動いているようです。

ro.product.cpu.abi=x86
ro.product.cpu.abi2=armeabi-v7a
ro.product.cpu.abilist=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist64=

以前調べたように、Android x86 端末は Binary Translator によって
ARM の Native code を実行することができます。
同じ x86 (32bit) でも 5.0 以降なら 3種類指定できるので、
Nexus Player の場合 armeabi も含まれていることがわかります。

Device       Android CPU           ABI
-------------------------------------------------------------------
Nexus 5         5.0  Krait 400                armeabi-v7a  armeabi
Nexus 9         5.0  Denver        arm64-v8a  armeabi-v7a  armeabi
Nexus Player    5.0  Silvermont    x86        armeabi-v7a  armeabi
MeMO Pad ME176  4.4  Silvermont    x86        armeabi-v7a

Android 5.0 からは、これまで x86 で動かなかったアプリも動くように
なるかもしれません。
将来 x64 (x86_64) 端末が登場したら x86_64 を含めた 4種類です。

関連エントリ
Nexus 9 Tegra K1 と ARM 64bit Denver
Android x86 Binary Translator を試してみる