Hoy os traemos un artículo bastante técnico pero muy interesante para conocer la arquitectura de procesador de nuestro dispositivo Android. Conforme pasa el tiempo cada vez tenemos una mayor variedad de arquitecturas de procesador en nuestros dispositivos Android, los desarrolladores de apps pueden tener la necesidad de detectar qué tipo de procesador utiliza el dispositivo en el cual se está ejecutando su app y en base a esto actuar de una u otra forma.
La forma más sencilla de conocer la arquitectura de procesador del dispositivo en el que se ejecuta una app, es utilizando las propiedades del objeto android.os.Build. A continuación vamos a intentar explicaros su uso, dependiendo de la API level que utilizamos o lo que es lo mismo de la versión de Android con la que trabajemos.
Cómo identificar qué tipo de arquitectura tiene tu Android
API Level < 21
Si tu app utiliza API Level menor a 21 (Lollipop), la propiedad que debes consultar es android.os.Build.CPU_ABI, la cual te regresa un String con el valor de la arquitectura de procesador principal en el dispositivo (“x86”, “x86_64”, “armeabi-v7a”, “armeabi”, “arm64-v8a”, “mips”, “mips64”).
Además de la arquitectura de procesador principal, algunos dispositivos pueden soportar instrucciones para otras arquitecturas de procesador. Por ejemplo, en el caso de dispositivos Intel, su arquitectura principal es x86 pero también soportan instrucciones para ARM v7 por medio de traducción binaria. Es por ello que también existe la propiedad android.os.Build.CPU_ABI2 la cual indica la arquitectura secundaria soportada por el dispositivo.
El siguiente listado muestra un ejemplo de código donde se invocan las propiedades CPU_ABI y CPU_ABI2.
La siguiente imagen muestra el resultado de ejecutar esta app en un dispositivo Asus Fonepad 7, que tiene procesador Intel Atom Z2560 de doble núcleo a 1.6 GHz. Como vemos la arquitectura principal que nos muestra en x86, mientras que la secundaria es armeabi v7a.
API Level > 21
Vamos ahora a ver cómo podemos hacerlo a partir de la última versión de Android. Con la llegada de los 64 bits a los dispositivos Android, habrá dispositivos que puedan soportar incluso más de 2 ABIs.
Por ejemplo, un dispositivo Intel de 64 bits como el Intel Atom Z3580 del ASUS Zenfone 2 soportaría principalmente x86_64, pero también x86 de 32 bits y ARM v7. Es así que a partir de Android Lollipop, las propiedades android.os.Build.CPU_ABI y android.os.Build.CPU_ABI2 quedan deprecadas, y ahora se recomienda utilizar la propiedad android.os.Build.SUPPORTED_ABIS. Esta regresa un arreglo de Strings con la lista de arquitecturas de procesador soportadas, en orden de prioridad.
Detección por medio de ADB
Con el Android Debug Bridge (ADB) también puedes detectar el valor de estas propiedades en dispositivos conectados a tu computadora. Las propiedad que debes buscar es ro.product.cpu.abi, ro.product.cpu.abi2 (en el caso de dispositivos con Android < 5.0) y ro.product.cpu.abilist (en el caso de dispositivos con Android >= 5.0).
Os mostramos dos imágenes de cómo sería el resultado al ejecutar este comando en dos dispositivos distintos, en concreto el Asus Fonepad 7 y Sony Xperia Z1s.
Son dos formas distintas de descubrir qué arquitectura tiene tu dispositivo Android. Hay muchas más formas distintas aparte de conocer la arquitectura para optimizar las aplicaciones y aprovechar toda la potencia que ofrece cada tipo de procesador.
¿Conocíais esta forma de descubrirlo? ¿Sabíais que existen diversos tipos de arquitectura de procesadores?
Más información Zona de desarrolladores