Как включить multidexing с новой библиотекой поддержки Android Multidex
Я хочу использовать новую библиотеку поддержки Multidex, чтобы сломать ограничение метода для одного из моих приложений.
с Android Lollipop Google представила библиотеку поддержки multidex, которая упрощает multidex.
какие шаги необходимы для использования этой библиотеки и создания моего приложения с поддержкой multidex?
10 ответов
Edit:
Android 5.0 (уровень API 21)и выше использует искусство, которое изначально поддерживает многодексное. Поэтому, если ваш minSdkVersion
21 или выше, библиотека поддержки 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 построить multi dexed apk. Команда 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'
}
}
}
больше информации можно найти на Алекс Lipovs блог.
просто, чтобы включить 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>
в своем построить.Gradle в добавить эту зависимость:
compile 'com.android.support:multidex:1.0.1'
раз в построить.Gradle в file добавьте эту строку в 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: изменить построение.класс!--6-->
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.строитель!--5-->
и добавьте это в свой dependencie
dependencies {
compile 'com.android.support:multidex:1.0.0'}
затем вы должны добавить
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true}
затем откройте класс и расширьте его до Application Если ваше приложение использует расширяет класс приложения, вы можете переопределить Бру() метод и вызвать
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 вашего пользовательского приложения
или ваше пользовательское приложение extend 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);
}
}