v7a teléfono saber que procesador cómo cual como celulares arquitectura armv8l armeabi android cpu-architecture

android - teléfono - Llamada a la API para obtener la arquitectura del procesador



cómo saber si mi teléfono es arm o x86 (8)

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

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

De mis pruebas volvió armv71 y i686 .

EDITAR:

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

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

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

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

Gracias


Los valores que buscas son.

ro.product.cpu.abi

y

ro.product.cpu.abi2

Se pueden obtener usando la API interna SystemProperties.get, por lo que tendrá que usar Reflection en SystemProperties.

Podría usar la función getSystemProperty si no está demasiado interesado en la reflexión. Compruébalo here


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 u 86_64


Puedes usar el comando adb

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

y consulte el [sitio]: ¿Cómo saber que un proceso de una aplicación es programático de 32 bits o de 64 bits en la piruleta de Android?

Si estás 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));


Puedes usar la clase Build :

import android.os.Build;

y luego leer:

Build.CPU_ABI


También puedes usar el SDK de Android, mira 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");


termux-app utiliza un enfoque diferente y tiene una explicación:

private static String determineTermuxArchName() { // Note that we cannot use System.getProperty("os.arch") since that may give e.g. "aarch64" // while a 64-bit runtime may not be installed (like on the Samsung Galaxy S5 Neo). // Instead we search through the supported abi:s on the device, see: // http://developer.android.com/ndk/guides/abis.html // Note that we search for abi:s in preferred order (the ordering of the // Build.SUPPORTED_ABIS list) to avoid e.g. installing arm on an x86 system where arm // emulation is available. for (String androidArch : Build.SUPPORTED_ABIS) { switch (androidArch) { case "arm64-v8a": return "aarch64"; case "armeabi-v7a": return "arm"; case "x86_64": return "x86_64"; case "x86": return "i686"; } } throw new RuntimeException("Unable to determine arch from Build.SUPPORTED_ABIS = " + Arrays.toString(Build.SUPPORTED_ABIS)); }

Desde: https://github.com/termux/termux-app/blob/master/app/src/main/java/com/termux/app/TermuxInstaller.java