Algunas razones por las que una aplicación es incompatible pueden ser AndroidManifest.xml
otras solo existen en la configuración de [Play] Store (como limitaciones a un país, un operador o si el desarrollador de la aplicación ha incluido ciertos dispositivos en la lista blanca por el motivo que sea).
AndroidManifest.xml
Versión mínima/máxima de Android
Volver AndroidManifest.xml
. Si lo descifras utilizando una herramienta como apktool o Jadx-GUI primero debe comprobar la entrada minSdkVersion
:
<uses-sdk android:minSdkVersion="30" android:targetSdkVersion="33"/>
En este ejemplo, la aplicación está restringida a Android 11 y versiones posteriores. En teoría, también puede haber una maxSdkversion
pero las aplicaciones que tienen una entrada de este tipo son muy, muy raras.
Características del hardware
Las siguientes restricciones pueden venir de uses-feature
entradas marcadas como android:required="true"
:
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
Puede haber varias entradas para diferentes características de hardware como Bluetooth, cámara, etc. Si encuentra una entrada que tiene android:required="false"
se trata de un requisito de hardware opcional, por lo que no debería importar si tu dispositivo lo admite o no. Puedes obtener la lista de características soportadas de tu teléfono usando el comando adb shell pm list features
.
Bibliotecas compartidas necesarias
Las siguientes entradas relevantes son uses-libraries
:
<uses-library android:name="org.apache.http.legacy" android:required="true"/>
De nuevo, al igual que para las características de hardware, estas entradas definen las bibliotecas de software que debe soportar tu teléfono. Puedes obtener la lista de librerías compartidas soportadas usando el comando adb shell pm list libraries
.
Incluso si se trata de un requisito de software no es posible en los dispositivos no rooteados para instalar una biblioteca que falta. En los dispositivos rooteados es teóricamente posible añadir una biblioteca que falta, pero a menudo esas bibliotecas requieren ciertas características de hardware u otras bibliotecas (específicas del fabricante), por lo que añadirlas no suele ser posible.
Arquitectura de la CPU
Otra restricción muy importante es qué arquitecturas de CPU son compatibles con un APK. Por el momento hay cuatro arquitecturas de CPU relevantes:
armeabi-v7a
alias armeabi
(ARM 32 bits)
arm64-v8a
(ARM 64 bits)
x86
x86_64
x86 y x86_64 sólo son relevantes para los emuladores, los dispositivos físicos con una de estas arquitecturas no han salido al mercado en los últimos 10 años. Puede comprobar qué arquitectura admite un APK consultando la etiqueta libs
carpeta. Si esta carpeta no existe o no tiene subcarpeta, entonces no hay restricción de arquitectura. Para un APK dividido más reciente, tiene un archivo APK separado con la arquitectura en su nombre de archivo. En tal caso los archivos APK base (donde se almacenan las clases*.dex no tienen carpeta libs).
Puede comprobar las arquitecturas de CPU compatibles de su teléfono mediante el comando adb shell getprop ro.product.cpu.abilist
.