Вывод Android os.arch для ARM, MIPS, x86?

Чтобы определить платформу Android-устройства, кажется, что достаточно системного свойства java-системы «os.arch»:

Log.i("mytag", "os.arch: " + System.getProperty("os.arch")); 

Большинство устройств ARM отвечают: os.arch: armv7l

Эмулятор x86 отвечает: os.arch: i686

Каковы результаты этого для реальных устройств Intel и MIPS?

X86 Android-устройство: ??????

Mips Android-устройство: ??????

Любые другие платформы и варианты?

EDIT для Google TV:

Похоже, Google TV использует «none» для кода сборки.

Vizio Co-Star: os.arch: armv7l, Build.CPU_ABI / Build.CPU_ABI2: нет / неизвестно

Logitech Revue: os.arch: i686, Build.CPU_ABI / Build.CPU_ABI2: нет / неизвестно

EDIT для уточнения намерения:

Цель здесь состоит в том, чтобы скомпилировать список реальных устройств с их выходом. Ожидаемый вывод кода AOSP интересен, но производители устройств, такие как старые устройства Google TV выше, могут отклоняться от предоставления ожидаемого результата от кода AOSP.

Solutions Collecting From Web of "Вывод Android os.arch для ARM, MIPS, x86?"

Согласно тому, что я могу найти в исходном дереве ro.product.cpu.abi свойство ro.product.cpu.abi (доступ к которому вы можете получить как CPU_ABI через класс Build ) должно иметь следующее сопоставление архитектуры:

32-битные ABI:

ARM : «armeabi-v7a» (или, возможно, «armeabi», если это действительно старое / младшее устройство)

X86 : "x86"

MIPS : "mips"


64-битные ABI:

ARM : «arm64-v8a»

X86 : "x86_64"

MIPS : "mips64"

Эти значения исходят из структуры Linux. Они могут отображаться из оболочки с помощью cat /proc/cpuinfo . ARM определяет их в каталоге arch/arm/mm . Из этого каталога,

 grep cpu_arch_name * | grep string | cut -d \, -f2 | sort | uniq 
  • ARMV4
  • armv4t
  • armv5t
  • armv5te
  • armv5tej
  • ARMv6
  • ARMv7

Arm7l указывает режим «маленький конец », но это выбирается и зависит от ядра. Я бы подумал, что большинство ядер ARM будут «немного endian», если это не сетевой продукт (например, маршрутизатор Android). Это то же самое, что uname -m . На x86 он возвращает «i686» на PowerPC, он возвращает «ppc». У меня нет системы MIPS, но я предполагаю, что это «mips», но это может быть ассортимент, найденный в cpu-probe.c

В Linux существует более 20 архитектур в разных версиях. Ответ на данный вопрос гораздо меньше для текущих портов Android. Однако, возможно, что любой из них может быть использован в будущем. Я думаю, что ARM является единственным, кто отправляет субархитектуру .

См. Также: uname() man-страница , Unipame , Википедия Uname , Uname- серверы , список рассылки OpenJdk

Это может быть помощь

  1. Build.CPU_ABI Имя набора команд (тип процессора + соглашение ABI) собственного кода.
  2. Build.CPU_ABI2 Имя второго набора команд (тип процессора + соглашение ABI) собственного кода.

Дополнительная информация Android Build Class