Как включить мультисайдинг с новой библиотекой поддержки Android Multidex

Я хочу использовать новую библиотеку поддержки Multidex, чтобы прервать ограничение метода для одного из моих приложений.

С Android Lollipop Google представила библиотеку поддержки multidex, которая упрощает работу с multidex.

Какие шаги необходимы для использования этой библиотеки и для создания моего приложения с поддержкой multidex?

    С 3 декабря 2014 года были выпущены инструменты для сборки 1.0.0-rc1 . Теперь все, что вам нужно сделать, это изменить свой build.gradle :

     android { compileSdkVersion 22 buildToolsVersion "23.0.0" defaultConfig { minSdkVersion 14 //lower than 14 doesn't support multidex targetSdkVersion 22 // Enabling multidex support. multiDexEnabled true } } dependencies { compile 'com.android.support:multidex:1.0.1' } 

    Если вы используете модульные тесты, вы хотите включить их в свой класс Application :

     public class YouApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

    Для получения дополнительной информации это хорошее руководство.

    Следующие шаги необходимы для запуска многопоточности:

    Добавьте в проект проект android-support-multidex.jar. Банку можно найти в папке Android SDK / sdk / extras / android / support / multidex / library / libs

    Теперь вы либо позволяете классу приложений приложений расширять MultiDexApplication

     public class MyApplication extends MultiDexApplication 

    Или вы перезаписываете файл attachBaseContext следующим образом:

     protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } 

    Я использовал переписываемый подход, потому что это не противоречит иерархии классов вашего класса приложения.

    Теперь ваше приложение готово использовать multi-dex. Следующий шаг – убедить градлу построить многодекованный apk. Команда разработчиков сборки работает над тем, чтобы сделать это проще, но на данный момент вам нужно добавить следующее в часть Android для Android build.gradle

      dexOptions { preDexLibraries = false } 

    И следующее к общей части ваших приложений build.gradle

     afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = ['--multi-dex'] } else { dx.additionalParameters += '--multi-dex' } } } 

    Более подробную информацию можно найти в блоге Алекс Липовых .

    SIMPLY, чтобы включить multidex, вам нужно …

     android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.0' } 

    Также вы должны изменить файл манифеста. В манифесте добавьте класс MultiDexApplication из библиотеки поддержки multidex к элементу приложения, подобному этому

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest> 

    В вашем build.gradle добавьте эту зависимость:

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

    Снова в файле build.gradle добавьте эту строку в блок по умолчаниюConfig :

     multiDexEnabled true 

    Вместо расширения вашего класса приложений из приложения расширьте его из MultiDexApplication ; как :

     public class AppConfig extends MultiDexApplication { 

    Теперь тебе хорошо идти! И в случае необходимости, все MultiDexApplication делает это

     public class MultiDexApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

    Шаг 1: Изменить build.grade

     defaultConfig { ... // Enabling multidex support. multiDexEnabled true } dependencies { ... compile 'com.android.support:multidex:1.0.0' } 

    Шаг 2. Установка класса Application

     public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } } 

    Шаг 3: Измените класс.properties

     org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

    Это будет работать!. Благодарю.

    Если вы хотите включить multi-dex в свой проект, просто перейдите к gradle.builder

    И добавьте это в свою зависимость

      dependencies { compile 'com.android.support:multidex:1.0.0'} 

    То вам нужно добавить

      defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true} 

    Затем откройте класс и продолжите его в приложении. Если ваше приложение использует расширение класса Application, вы можете переопределить метод oncrete () и вызвать

      MultiDex.install(this) 

    Для включения мультидекса.

    И, наконец, добавить в свой манифест

      <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest> 

    Добавить в AndroidManifest.xml:

     android:name="android.support.multidex.MultiDexApplication" 

    ИЛИ

     MultiDex.install(this); 

    В методе attachBaseContext вашего пользовательского приложения

    Или ваше собственное приложение расширяет MultiDexApplication

    Добавьте multiDexEnabled = true в свой build.gradle

     defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } } 

    Просто добавив это, отрезанное в build.gradle, также отлично работает

     android { compileSdkVersion 22 buildToolsVersion "23.0.0" defaultConfig { minSdkVersion 14 //lower than 14 doesn't support multidex targetSdkVersion 22 **// Enabling multidex support. **multiDexEnabled true**** } } 

    Сначала вы должны попробовать с Proguard (этот чистый код не используется)

    Android {compileSdkVersion 25 buildToolsVersion "25.0.2"

     defaultConfig { minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 

    }

    Добавьте это в свой градиент приложения и не забудьте включить multidex

     dexOptions { incremental true javaMaxHeapSize "2g" }