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