3 votos

¿Por qué algunas aplicaciones no son compatibles con los dispositivos con procesador Intel?

Pokemon Go se estrena hoy pero tristemente he visto en algún lugar de Internet que afirma que Niantic ha afirmado que la app es no es compatible con dispositivos con procesador intel (en mi caso asus zenfone 5). Así que me pregunto por qué el tipo de procesador será uno de los factores determinar si la aplicación es compatible con el dispositivo . Se agradece cualquier ayuda. =)

2voto

GiantTree Puntos 1234

Nota: Esta respuesta cubre otras aplicaciones además de Pokémon Go, ya que Pokémon Go se ha actualizado para funcionar con procesadores x86

Las aplicaciones contienen múltiples partes dependientes e independientes de la arquitectura:

  • Independiente:

    • Código Dalvik
    • Recursos Android
    • el Manifiesto
  • Dependiente:

    • Bibliotecas
    • Código ensamblador especial en el ejecutable Dalvik (raro pero posible)

Lo más importante son las bibliotecas.
Son objetos compartidos ( .so ), al igual que las DLL de Windows, que contienen bytecode .
Se compilan utilizando el NDK (kit de desarrollo nativo) de Android y se compilan para una arquitectura específica (como la compilación de aplicaciones de Linux utilizando un compilador cruzado, es decir, compilar código ARM en una máquina x86).
En nuestro ejemplo, esta biblioteca sólo puede utilizarse en un entorno ARM si se entiende el bytecode ARM.

Algunos dispositivos Android x86 (teléfonos/tabletas comerciales, no los emuladores) vienen con un kit de herramientas de traducción ARM especial, aka. libhoudini . Básicamente traduce las instrucciones ARM a instrucciones x86.
Sin embargo, esas instrucciones no están optimizadas para ejecutarse en hardware x86 y, por tanto, dan lugar a un bajo rendimiento y a un elevado uso de la batería (esta última es una de las razones por las que el x86 no se utiliza principalmente en los procesadores para móviles).

Los verdaderos problemas son los desarrolladores :
O bien:

  1. Por alguna razón, no compilan sus bibliotecas (que a menudo contienen código propietario) para cualquier otra arquitectura.

  2. Utilizan bytecode especializado, sólo disponible en ARM por lo que cualquier traductor ARM o libhoudini falla.

Por suerte, Pokémon Go recibió una actualización que permite a los usuarios de dispositivos x86 ejecutar la aplicación, pero otras aplicaciones (sobre todo los juegos) sí requieren un dispositivo ARM real.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X