2016-10-28 2 views
0

Проект, над которым я работаю, имеет около 180k Методы. Я читал блоги и статьи, где написано, что если вы установили Min SDK в 21, вам не понадобится MultiDex. Но если я удалю MultiDex, он даст мне сообщение об ошибке 65k MultiDex. Ниже приведен мой файл gradle. Я не знаю, не понял ли я концепцию или что-то еще. Пожалуйста, направляйте меня.Получение ошибки MultiDex, даже после установки Min SDK 21

compileSdkVersion 23 
buildToolsVersion "23.0.3" 
defaultConfig { 

    applicationId 'com.myapp.app' 
    minSdkVersion 21 
    targetSdkVersion 23 
    versionCode 59 
    versionName "1.0.1" 
    multiDexEnabled true 
    ndk { 
     abiFilters "armeabi", "armeabi-v7a", "x86" 
    } 
} 
dexOptions { 
    javaMaxHeapSize "4g" //specify the heap size for the dex process 
} 
lintOptions { 
    abortOnError false 
} 

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

productFlavors { 
} 
+0

какие блоги вы упомянули? – Sanjeet

+0

http://blog.safedk.com/technology/solving-androids-65k-limit-part-2-the-lollipop-generation/ – Kirmani88

ответ

4

если вы установите Min SDK до 21, то вам не нужно MultiDex

В соответствии с "поддержкой Multidex для Android 5.0 и выше" инструкции в MultiDex guide, даже если вы minSdk 21, то вы все еще нуждаетесь в компиляции с multiDexEnabled true. Что вам не нужно сделать, это включить библиотеку поддержки MultiDex через:

compile 'com.android.support:multidex:1.0.0' 

или позвоните MultiDex.install(Context) в вашем Application классе.

Проблема с методом 64K является ограничением формата файла DEX, а не самой платформы Android. Разница между двумя версиями заключается в том, что Android 5.0+ знает, как автоматически загружать несколько файлов DEX в один файл OAT и загружать из него классы, в то время как версии Android до 5.0 требуют наличия библиотеки поддержки для загрузки классов из вторичных файлов DEX (например, classes2.dex, classes3.dex и т. д.).

+0

Большое спасибо! Ваш ответ разрешил мою путаницу! :) – Kirmani88

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