it-swarm.com.de

So aktivieren Sie Multidexing mit der neuen Support-Bibliothek für Android Multidex

Ich möchte die neue Multidex-Unterstützungsbibliothek verwenden, um das Methodenlimit für eine meiner Apps zu durchbrechen. 

Mit Android Lollipop hat Google eine Multidex-Unterstützungsbibliothek eingeführt, die das Multidex leicht macht. 

Welche Schritte sind erforderlich, um diese Bibliothek zu verwenden und meine App mit Multidex-Unterstützung zu erstellen?

118
Janusz

Bearbeiten:

Android 5.0 (API Level 21) und höher verwendet ART, das Multidexing nativ unterstützt. Wenn Ihre minSdkVersion 21 oder höher ist, wird die Multidex-Unterstützungsbibliothek nicht benötigt.


Ändern Sie Ihren 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'
}

Wenn Sie Komponententests ausführen, sollten Sie dies in Ihre Application-Klasse aufnehmen:

public class YouApplication extends Application {

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

}

Oder machen Sie einfach Ihre application-Klasse erweiterbar MultiDexApplication

public class Application extends MultiDexApplication {

}

Für weitere Informationen ist dieses ein guter Leitfaden.

247
Chad Bingham

Die folgenden Schritte sind erforderlich, um Multi-Dexing zu starten: 

Fügen Sie Ihrem Projekt Android-support-multidex.jar hinzu. Das Jar befindet sich in Ihrem Android SDK-Ordner/sdk/extras/Android/support/multidex/library/libs

Jetzt können Sie entweder Ihre Apps-Anwendungsklasse MultiDexApplication erweitern lassen

public class MyApplication extends MultiDexApplication

oder Sie überschreiben attachBaseContext wie folgt:

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

Ich habe den Überschreibungsansatz verwendet, weil dadurch die Klassenhierarchie Ihrer Anwendungsklasse nicht beeinträchtigt wird.

Jetzt ist Ihre App für die Verwendung von Multi Dex bereit. Der nächste Schritt besteht darin, Gradle zu überzeugen, ein Multi-Dexed-Apk zu bauen. Das Build-Tools-Team arbeitet daran, dies zu vereinfachen. Im Moment müssen Sie jedoch den Android-Teil Ihrer Build-Klasse für Apps hinzufügen

   dexOptions {
      preDexLibraries = false
   }

Und das Folgende zum allgemeinen Teil Ihrer Apps build.gradle

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

Weitere Informationen finden Sie auf Alex Lipovs Blog .

43
Janusz

EINFACH, um Multidex zu aktivieren, müssen Sie ...

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'
}

sie müssen auch Ihre Manifestdatei ändern. Fügen Sie in Ihrem Manifest die MultiDexApplication-Klasse aus der Multidex-Unterstützungsbibliothek dem Anwendungselement wie folgt hinzu 

<?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>
17
smoothumut

Fügen Sie in Ihrem build.gradle diese Abhängigkeit hinzu: 

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

fügen Sie diese Zeile erneut in Ihrer build.gradle -Datei zu defaultConfig block hinzu:

multiDexEnabled true

Anstelle der Erweiterung Ihrer Anwendungsklasse von Application erweitern Sie sie von MultiDexApplication ; mögen :

public class AppConfig extends MultiDexApplication {

jetzt bist du gut zu gehen! Und falls Sie es brauchen, ist alles, was MultiDexApplication ist

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

Schritt 1: Build.grade ändern

defaultConfig {
    ...
    // Enabling multidex support.
    multiDexEnabled true
}

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

Schritt 2: Einstellung in der Application-Klasse

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

Schritt 3: gradeeigenschaften ändern

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

Es wird klappen!. Vielen Dank.

3
sonnv1368

Zuerst sollten Sie es mit Proguard versuchen.

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'
        }
    }
}
1
Moises Apaza Q

Wenn Sie Multi-Dex in Ihrem Projekt aktivieren möchten, gehen Sie einfach zu gradle.builder 

und fügen Sie dies in Ihrer Abhängigkeit hinzu 

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

dann musst du hinzufügen 

 defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...

// Enabling multidex support.
multiDexEnabled true}

Öffnen Sie dann eine Klasse und erweitern Sie sie zu Application Wenn Ihre App die Application-Klasse erweitert, können Sie die oncrete () -Methode überschreiben und aufrufen

   MultiDex.install(this) 

um multidex zu aktivieren.

und fügen Sie schließlich in Ihr Manifest ein

 <?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> 
0
pavel

Zu AndroidManifest.xml hinzufügen:

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

OR

MultiDex.install(this);

in der attachBaseContext-Methode Ihrer benutzerdefinierten Anwendung

oder Ihre benutzerdefinierte Anwendung erweitern MultiDexApplication

add multiDexEnabled = true in Ihrem build.gradle

defaultConfig {
    multiDexEnabled true
}

dependencies {
    compile 'com.Android.support:multidex:1.0.0'
    }
}
0
Malik Abu Qaoud

build.gradle

multiDexEnabled true
implementation 'androidx.multidex:multidex:2.0.1'

AndroidManifest.xml

<application
    Android:name="androidx.multidex.MultiDexApplication"