Как включить многозадачность с новой библиотекой поддержки Android Multidex
Я хочу использовать новую библиотеку поддержки Multidex, чтобы прервать ограничение метода для одного из моих приложений.
С Android Lollipop Google представила библиотеку поддержки multidex, которая упрощает работу с multidex.
Какие шаги необходимы для использования этой библиотеки и для создания моего приложения с поддержкой multidex?
Ответы
Ответ 1
Редактировать:
Android 5.0 (уровень API 21) и выше использует ART, который изначально поддерживает мультидексинг. Поэтому, если ваш minSdkVersion
21 или выше, библиотека поддержки мультидекса не нужна.
Измените ваш 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 {
implementation '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);
}
}
Или просто сделайте свой класс application
расширенным MultiDexApplication
public class Application extends MultiDexApplication {
}
Для получения дополнительной информации, это хорошее руководство.
Ответ 2
Следующие шаги необходимы для запуска мультидексинга:
Добавьте 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. Следующим шагом будет убедить gradle построить apx с несколькими дексами. Команда инструментов сборки работает над тем, чтобы сделать это проще, но на данный момент вам нужно добавить следующее в часть 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'
}
}
}
Больше информации можно найти в блоге Алекса Липова.
Ответ 3
ПРОСТО, чтобы включить мультидекс, нужно...
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
implementation '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>
Ответ 4
В build.gradle добавьте эту зависимость:
compile 'com.android.support:multidex:1.0.1'
снова в файле build.gradle добавьте эту строку в блок defaultConfig:
multiDexEnabled true
Вместо расширения вашего класса приложений из Application расширьте его с MultiDexApplication; например:
public class AppConfig extends MultiDexApplication {
теперь ты в порядке! И если вам это нужно, все MultiDexApplication
есть
public class MultiDexApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Ответ 5
Шаг 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
Это сработает!. Спасибо.
Ответ 6
Сначала вы должны попробовать с 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'
}
}
}
Ответ 7
Если вы хотите включить 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)
чтобы включить 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>
Ответ 8
Добавить в AndroidManifest.xml:
android:name="android.support.multidex.MultiDexApplication"
ИЛИ
MultiDex.install(this);
в вашем настраиваемом методе applicationBaseContext Application
или ваше пользовательское приложение расширяет MultiDexApplication
добавить multiDexEnabled = true в файл build.gradle
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
}
Ответ 9
поддержка сторонней библиотеки multidex для вашего приложения
Ответ 10
build.gradle
multiDexEnabled true
implementation 'androidx.multidex:multidex:2.0.1'
AndroidManifest.xml
<application
android:name="androidx.multidex.MultiDexApplication"
Ответ 11
Добавьте это в свое приложение gradle и не забудьте включить multidex
dexOptions {
incremental true
javaMaxHeapSize "2g"
}
Ответ 12
просто добавив это, отрезанное в 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****
}
}
Ответ 13
Multi_Dex.java
public class Multi_Dex extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}