Je souhaite utiliser la nouvelle bibliothèque de support Multidex pour dépasser la limite de méthodes de l'une de mes applications.
Avec Android Lollipop, Google a introduit une bibliothèque de support multidex facilitant l'utilisation de ce logiciel.
Quelles étapes sont nécessaires pour utiliser cette bibliothèque et créer mon application avec le support multidex?
Modifier:
Android 5.0 (API de niveau 21) et supérieur utilise ART qui prend en charge de manière native le multidexing. Par conséquent, si votre minSdkVersion
est égal à 21 ou plus, la bibliothèque de support multidex n'est pas nécessaire.
Modifiez votre 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'
}
Si vous exécutez des tests unitaires, vous voudrez l'inclure dans votre classe Application
:
public class YouApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Ou bien faites simplement que votre classe application
soit étendue MultiDexApplication
public class Application extends MultiDexApplication {
}
Pour plus d'informations, ceci est un bon guide.
Les étapes suivantes sont nécessaires pour démarrer le multi-indexage:
Ajoutez Android-support-multidex.jar à votre projet. Le fichier jar se trouve dans votre dossier SDK Android/sdk/extras/Android/support/multidex/library/libs
Vous pouvez maintenant laisser votre classe d'applications apps étendre MultiDexApplication
public class MyApplication extends MultiDexApplication
ou vous substituez attachBaseContext comme ceci:
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
J'ai utilisé l'approche de substitution car cela ne gêne pas la hiérarchie de classe de votre classe d'application.
Votre application est maintenant prête à utiliser le multi-dex. La prochaine étape consiste à convaincre Gradle de construire un apk multi dexé. L’équipe des outils de construction s’efforce de simplifier cela, mais pour le moment, vous devez ajouter les éléments suivants à la partie Android de votre application
dexOptions {
preDexLibraries = false
}
Et ce qui suit à la partie générale de vos applications build.gradle
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = ['--multi-dex']
} else {
dx.additionalParameters += '--multi-dex'
}
}
}
Plus d'informations peuvent être trouvées sur Alex Lipovs blog .
SIMPLEMENT, pour activer multidex, vous devez ...
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'
}
de plus, vous devez modifier votre fichier manifeste. Dans votre manifeste, ajoutez la classe MultiDexApplication de la bibliothèque de support multidex à l'élément d'application, comme ceci
<?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>
Dans votre build.gradle ajoutez cette dépendance:
compile 'com.Android.support:multidex:1.0.1'
à nouveau dans votre build.gradle file, ajoutez cette ligne à defaultConfig block:
multiDexEnabled true
Au lieu d'étendre votre classe d'applications depuis Application , étendez-la depuis MultiDexApplication ; comme :
public class AppConfig extends MultiDexApplication {
maintenant vous êtes prêt à partir! Et si vous en avez besoin, tout ce que MultiDexApplication
fait est
public class MultiDexApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Etape 1: Change build.grade
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
...
compile 'com.Android.support:multidex:1.0.0'
}
Étape 2: Réglage sur la classe d'application
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(this);
}
}
Etape 3: Changer grade.properties
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Ça va marcher!. Merci.
D'abord, vous devriez essayer avec Proguard (Cela nettoie tout le code non utilisé)
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'
}
}
}
Si vous voulez activer le multi-dex dans votre projet, allez simplement à gradle.builder
et ajoutez ceci dans votre dépendance
dependencies {
compile 'com.Android.support:multidex:1.0.0'}
alors vous devez ajouter
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true}
Ouvrez ensuite une classe et étendez-la en Application Si votre application utilise la classe Application, vous pouvez remplacer la méthode oncrete () et appeler
MultiDex.install(this)
activer multidex.
et enfin ajouter dans votre manifeste
<?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>
Ajouter à AndroidManifest.xml:
Android:name="Android.support.multidex.MultiDexApplication"
OR
MultiDex.install(this);
dans la méthode attachBaseContext de votre application personnalisée
ou votre application personnalisée étendre MultiDexApplication
ajoutez multiDexEnabled = true dans votre build.gradle
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.Android.support:multidex:1.0.0'
}
}
build.gradle
multiDexEnabled true
implementation 'androidx.multidex:multidex:2.0.1'
AndroidManifest.xml
<application
Android:name="androidx.multidex.MultiDexApplication"