¿Por qué Google Maps solo tiene 48 megabytes en Android 4.4.4, pero es de 125M en Android 5.1.1? Parece que el teléfono con Android 5.1.1 tiene un procesador de 32 bits y el teléfono con Android 4.4.4 tiene un procesador de 64 bits según devicespecifications.com. Pensaría que el teléfono de 64 bits tendría el binario más grande.
Respuesta
¿Demasiados anuncios?Si tienes acceso a root, puedes navegar por /data/app
y esa es la diferencia.
\# Ejemplo para Android K 4.4
com.android.vending-1.apk
com.google.android.apps.maps-1.apk
# Ejemplo para Android L 5.0/5.1
com.android.vending-1/
com.google.android.apps.maps-1/
Y si lista el contenido de uno de ellos, verás
com.google.android.apps.maps-1/:
base.apk (54MB)
lib/
com.google.android.apps.maps-1/lib/:
arm64/
com.google.android.apps.maps-1/lib/arm64/:
libcronet.59.0.3602.4.so (4.9MB)
libgmm-jni.so (9.4MB)
También, Android 4.4 implementa el antiguo Dalvik VM, mientras que en Android 5+ Google cambió a un nuevo VM llamado ART. La principal diferencia es que Dalvik compila aplicaciones Just-In-Time (JIT), mientras que ART compila Ahead-Of-Time (AOT), por lo que se compila más código en ART que en Dalvik. Por eso este es realmente grande:
/data/dalvik-cache/arm64/data@app@com.google.android.apps.maps-1@base.apk@classes.dex (109.5MB)
En Android 4.4 es mucho más pequeño, puedes comprobarlo por ti mismo.
4 votos
La razón principal será que Android 4.4 utiliza Dalvik, pero con Android 5 y versiones posteriores se utiliza ART, que en promedio necesita alrededor del 25 al 50% más de espacio para "código precompilado". Aunque la diferencia entre 48M y 125M parece superar eso, lo que podría significar que diferentes versiones (ya sea en términos de "números de versión" o en términos de "variantes" debido a las diferentes versiones de Android) son un segundo criterio.
0 votos
Las números de versión listados en la configuración de la aplicación parecen ser los mismos. ¿Hay alguna otra forma de verificarlo?
0 votos
También he descubierto que puedo habilitar ART en mi teléfono. Lo intenté, pero no pareció cambiar nada. Lo que leí fue que solo funciona para el chipset Snapdragon, pero creo que mi teléfono tiene mediatek. Gracias por la información.
1 votos
@Izzy Dos razones principales: 1. En un sistema de 64 bits algunas aplicaciones están optimizadas dos veces, generando un odex de 32 bits y un odex de 64 bits. 2. Todas las bibliotecas se extraen en Android L.