Llamada de API para obtener la arquitectura del procesador

Como parte de mi aplicación estoy usando el NDK y me preguntaba si vale la pena agrupar x86 y binarios mips junto con los binarios ARM estándar.

Pensé que la mejor manera sería hacer un seguimiento de lo que mis usuarios realmente tienen, ¿hay una llamada de la API para agarrar la arquitectura del procesador para poder pasar esto de nuevo a mi instancia de Google Analytics?

Gracias

En realidad, se puede obtener la arquitectura sin necesidad de reflexión en absoluto:

String arch = System.getProperty("os.arch"); 

De mis pruebas regresó armv71 y i686 .

EDITAR:

En arquitectura MIPS, devuelve 'mips' o 'mips64'

En 64 bits ARM / Intel, devuelve 'arch64' o 'x86_64' respectivamente.

También puedes usar SDK android, echa un vistazo a la clase Build :

  /** The name of the instruction set (CPU type + ABI convention) of native code. */ public static final String CPU_ABI = getString("ro.product.cpu.abi"); /** The name of the second instruction set (CPU type + ABI convention) of native code. */ public static final String CPU_ABI2 = getString("ro.product.cpu.abi2"); 

Puede utilizar el comando adb

Adb shell getprop ro.product.cpu.abi adb shell getprop ro.product.cpu.abi2

Y se refieren a la [sitio]: ¿Cómo saber un proceso de una aplicación es de 32 bits o de 64 bits por programación en Android Lollipop?

Si está buscando la API de Lollipop

 import android.os.Build; Log.i(TAG, "CPU_ABI : " + Build.CPU_ABI); Log.i(TAG, "CPU_ABI2 : " + Build.CPU_ABI2); Log.i(TAG, "OS.ARCH : " + System.getProperty("os.arch")); Log.i(TAG, "SUPPORTED_ABIS : " + Arrays.toString(Build.SUPPORTED_ABIS)); Log.i(TAG, "SUPPORTED_32_BIT_ABIS : " + Arrays.toString(Build.SUPPORTED_32_BIT_ABIS)); Log.i(TAG, "SUPPORTED_64_BIT_ABIS : " + Arrays.toString(Build.SUPPORTED_64_BIT_ABIS)); 

Los valores que está buscando son

Ro.product.cpu.abi

y

Ro.product.cpu.abi2

Estos pueden ser obtenidos mediante la API interna SystemProperties.get Por lo que tendrá que utilizar Reflection en SystemProperties.

Usted podría utilizar la función getSystemProperty si no está demasiado interesado en la reflexión. Compruébelo aquí

Puede utilizar la clase Build :

import android.os.Build;

Y luego lea:

Build.CPU_ABI

Mi código se ve así

 private String cpuinfo() { String arch = System.getProperty("os.arch"); String arc = arch.substring(0, 3).toUpperCase(); String rarc=""; if (arc.equals("ARM")) { rarc= "This is ARM"; }else if (arc.equals("MIP")){ rarc= "This is MIPS"; }else if (arc.equals("X86")){ rarc= "This is X86"; } return rarc; } 

Pruebe este comando:

 adb shell getprop ro.product.cpu.abi 

Indica si la CPU es ARM o Intel, 64 o 86_64

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.