※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.
Android 5.0 Nexus Player x86과 대응 ABI
(원문 : 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종류가 됩니다.