Las aplicaciones modernas instaladas desde Google Play Store constan de varios archivos APK (también conocidos como archivos APK divididos). Si la app contiene archivos nativos .so
esos archivos suelen estar empaquetados por-ABI (por ejemplo armeabi-v7a
arm64-v8a
x86
o x86_64
) y sólo se descarga e instala el archivo ABI correspondiente.
Por lo tanto, para algunas aplicaciones se puede comprobar el ABI instalado mediante una lista de todos los archivos APK que pertenecen a una aplicación:
adb shell pm path <packagename>
Ejemplo:
package:/data/app/.../com.example.app-SO6ebvL9yDViMlHkHQ6NPw==/base.apk
package:/data/app/.../com.example.app-SO6ebvL9yDViMlHkHQ6NPw==/split_config.arm64_v8a.apk
package:/data/app/.../com.example.app-SO6ebvL9yDViMlHkHQ6NPw==/split_config.xxhdpi.apk
Si la lista de APKs contiene una entrada que termina con arm64_v8a.apk
y ningún otro archivo APK contiene en su nombre de archivo otro nombre ABI, entonces sabe que el arm64_v8a
La versión ABI está instalada y se utiliza.
Lamentablemente, esto sólo puede funcionar para APKs divididos. E incluso para algunas aplicaciones APK divididas no funciona por una razón desconocida - com.android.chrome
es una de esas aplicaciones que es una aplicación dividida con archivos dependientes de la plataforma, pero ninguno de los archivos APK tienen un indicador en el nombre del archivo que se instala ABI.