Почему карты Google отображают 48 миллионов на Android 4.4.4 и 125 миллионов на Android 5.1.1?

Почему карты Google отображают только 48 мегабайт на Android 4.4.4, а на Android 5.1.1 — 125 МБ? Телефон с Android 5.1.1, по-видимому, имеет 32-разрядный процессор, а телефон с версией 4.4.4 — 64-разрядный процессор с сайта devicespecifications.com. Я думаю, что 64-битный телефон будет иметь больший двоичный файл.

Основная причина будет заключаться в том, что Android 4.4 использует Dalvik , но с Android 5 и выше используется ART , который в среднем требует примерно на 25..50% больше места для «предварительно скомпилированного кода». Хотя разница между 48M и 125M кажется больше, что может означать, что разные версии (либо с точки зрения «номера версий», либо с точки зрения «вариантов» из-за разных версий Android) являются вторым критерием.
Номера версий, указанные в настройках приложения, кажутся одинаковыми. Есть ли другой способ проверить?
Я также обнаружил, что могу включить ART на своем телефоне. Я пробовал, но ничего не изменилось. Я читал, что это работает только для чипсета Snapdragon, но я думаю, что в моем телефоне есть mediatek. Спасибо за информацию.
@Izzy Две основные причины: 1. В 64-битной системе некоторые приложения оптимизируются дважды, создавая 32-битный и 64-битный odex. 2. Все библиотеки извлекаются на Android L.

Ответы (1)

Если у вас есть root-доступ, вы можете просматривать /data/app, и в этом разница.

# Пример для Android K 4.4
com.android.vending-1.apk
com.google.android.apps.maps-1.apk

# Пример для Android L 5.0/5.1
com.android.vending-1/
com.google.android.apps.maps-1/

И если вы перечислите содержимое одного из них, вы увидите

com.google.android.apps.maps-1/:
base.apk (54 МБ)
библиотека/

com.google.android.apps.maps-1/lib/:
рука64/

com.google.android.apps.maps-1/lib/arm64/:
libcronet.59.0.3602.4.so (4,9 МБ)
libgmm-jni.so (9,4 МБ)

Кроме того, в Android 4.4 реализована старая виртуальная машина Dalvik, а в Android 5+ Google переключился на новую виртуальную машину под названием ART. Основное отличие заключается в том, что Dalvik компилирует приложения точно в срок (JIT), тогда как ART компилирует с опережением времени (AOT), поэтому в ART компилируется больше кода, чем в Dalvik. Вот почему этот действительно большой :

/data/dalvik-cache/arm64/data@app@com.google.android.apps.maps-1@base.apk@classes.dex (109,5 МБ)

На Андроиде 4.4 он намного меньше, можете сами узнать.