2014-12-03 3 views
6

может ли кто-нибудь сказать мне, поддерживает ли multi dex в android 2.3?Multidex с Android 2.3 (API 9)

Я искал, но я не могу найти информацию для этого. Мой проект имеет такую ​​же конфигурацию, как этот: https://github.com/mustafa01ali/MultiDexTest

Проект строится без проблем, но окончательный apk нельзя установить на устройствах с 2.3 или ниже.

На установке я получаю ошибку

Failure [INSTALL_FAILED_DEXOPT] 

в Android Studio и это появляется в LogCat:

E/dalvikvm﹕ LinearAlloc exceeded capacity (5242880), last=1384 
W/installd﹕ DexInv: --- END '/data/app/xxx.apk' --- status=0x000b, process failed 
E/installd﹕ dexopt failed on '/data/dalvik-cache/[email protected]@[email protected]' res = 11 
+1

Пожалуйста, Google это. Это официально поддерживается: https://plus.google.com/+IanLake/posts/JW9x4pcB1rj. MultiDex: http://developer.android.com/reference/android/support/multidex/MultiDexApplication.html. –

+0

Спасибо, Джаред. Можете ли вы рассказать мне, когда, когда Янь Лейк говорит «все устройства API 4+», он говорит об уровне api или версии для Android? Android 4.0 имеет уровень api 14 ... – Zasuk

+1

Перечитайте то, что вы только что задали мне. API 4+ - это API 4 и больше 4. Читайте: http://developer.android.com/reference/android/support/multidex/MultiDex.html. –

ответ

5

Вы ударяя ограничение разного размера (LinearAlloc), который в соответствии с этой ошибкой не решается мульти-DEX:

https://code.google.com/p/android/issues/detail?id=78035

Из комментария # 7 в том, что ошибка:

Существует уже вариант в йх, позволяющей заставить поколение меньше тны файлов: --set-макс-IDX-номер = К сожалению, изменения по умолчанию не так как линейный предел Аллока может быть достигнут на очень высоком уровне разных уровней в зависимости от иерархии классов и других критериев .

Кроме того, для большинства приложений перемещение в multidex поможет только , чтобы обойти ограничение linearalloc для установки. Но приложение по-прежнему будет сталкиваться с тем же лимитом при исполнении. только рабочий прецедент, где я знаю, что multidex может помочь с linearalloc - это когда apk не содержит одного приложения, а отдельные части работает в отдельном процессе.

Непонятно, что вы можете что-то сделать, чтобы обойти этот предел, по крайней мере, в долгосрочной перспективе; вам может потребоваться упростить ваше приложение. Там еще один StackOverflow вопрос здесь с некоторой информацией и некоторые обходные пути, которые могут получить вас и работает, по крайней мере, на некоторое время:

How to avoid LinearAlloc Exceeded Capacity error android

Смежные вопросы