Как включить мультидекс с новой библиотекой поддержки Android Multidex
Я хочу использовать новую библиотеку поддержки Multidex, чтобы нарушить ограничение метода для одного из моих приложений.
с Android Lollipop Google представила библиотеку поддержки multidex, которая упрощает multidex.
какие шаги необходимы для использования этой библиотеки и для создания моего приложения с поддержкой multidex?
10 ответов:
Edit:
Android 5.0 (уровень API 21) и выше использует искусство, которое изначально поддерживает многодексность. Поэтому, если ваш
minSdkVersion21 или выше, библиотека поддержки multidex не требуется.
изменить
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.3' }если вы выполняете модульные тесты, вы хотите включить это в свой
Applicationкласс:public class YouApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }для получения дополнительной информации, этот это хороший гид.
для запуска multi dexing необходимы следующие шаги:
добавить android-поддержка-multidex.jar для вашего проекта. Банку может быть найдена в вашем Android папке SDK /пакет SDK/массовка/андроид/поддержка/multidex/библиотеки/библиотеки
теперь вы либо позволяете своим приложениям расширять класс приложений MultiDexApplication
public class MyApplication extends MultiDexApplicationили вы переопределяете attachBaseContext следующим образом:
protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }я использовал переопределение подхода, потому что это не возиться с классом иерархии классов приложения.
теперь ваше приложение готово к использованию multi dex. Следующий шаг-убедить Gradle в построить мульти dexed АПК. Команда build tools работает над тем, чтобы сделать это проще, но на данный момент вам нужно добавить следующее В android-часть сборки ваших приложений.gradle
dexOptions { preDexLibraries = false }и следующее к общей части вашего приложения сборки.gradle
afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = ['--multi-dex'] } else { dx.additionalParameters += '--multi-dex' } } }больше информации можно найти на блог Алексея Липова.
просто, чтобы включить 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 в элемент application следующим образом
<?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>
в своем построить.gradle добавить эту зависимость:
compile 'com.android.support:multidex:1.0.1'раз в построить.gradle файл добавьте эту строку в defaultConfig блок:
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: изменить построение.класс
defaultConfig { ... // Enabling multidex support. multiDexEnabled true } dependencies { ... compile 'com.android.support:multidex:1.0.0' }Шаг 2: установка на класс приложения
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } }Шаг 3: изменить класс.свойства
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8Он будет работать!. Спасибо.
сначала вы должны попробовать с 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' } } }
если вы хотите включить multi-dex в своем проекте, просто перейдите в gradle.строитель
и добавьте это в свою зависимость
dependencies { compile 'com.android.support:multidex:1.0.0'}затем вы должны добавить
defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true}затем откройте класс и расширьте его до приложения Если ваше приложение использует расширяет класс приложения, вы можете переопределить Бру() метод и вызвать
MultiDex.install(this)чтобы включить 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>
добавить в AndroidManifest.XML-код:
android:name="android.support.multidex.MultiDexApplication"или
MultiDex.install(this);в методе attachBaseContext вашего пользовательского приложения
или ваше пользовательское приложение расширяет MultiDexApplication
добавить multiDexEnabled = true в вашей сборке.gradle
defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } }
просто добавляя это обрезано в сборке.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**** } }
Multi_Dex.java
public class Multi_Dex extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
Comments