Die Klasse "android.support.multidex.MultiDexApplication" wurde im Pfad "DexPathList" nicht gefunden
Ich versuche die neue MultiDex Unterstützung auf meine app und bisher habe ich es geschafft, zum kompilieren meine app richtig, aber wenn es läuft, bekomme ich die folgende exception:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me..main-2, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me.myapp.main-2, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:998)
at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
Dies ist mein gradle-Datei:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 21
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:21.0.0'
compile 'com.android.support:support-v13:21.0.0'
compile 'com.android.support:appcompat-v7:21.0.0'
}
Und meine AndroidManifest.xml:
<application
android:name="android.support.multidex.MultiDexApplication">
Ich verstehe nicht, was das problem ist. Ich denke, ich mache alles nach der Dokumentation. Gibt es etwas, was ich bin fehlt? Ich stellte sicher, ich hatte die neuesten support-Bibliothek und repo installiert aus den SDK-manager.
InformationsquelleAutor der Frage Roberto Betancourt | 2014-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Konfiguration:
Leider habe ich das gleiche problem. Aber ich fand eine seltsame situation:
bauen/Zwischenprodukte/dex/debug:
entpacken apk, build/outputs/apk:
In der apk, die wichtigsten Klassen von Klassen.dex sollte größer sein, als classes2.dex, aber seine nicht. Ich mache auch dex2jar & entpacken Sie das jar zu prüfen Klassen, die application-Klasse gibt es nicht in Klassen.dex, seine in classes2.dex-im Gegenteil.
Allerdings sollte ich behoben haben. Hier ist meine angepasste android-gradle-plugin können Sie Folgendes versuchen:
Ist der patch in: https://github.com/yongjhih/android-gradle-plugin/commit/9c2212e3b1b4c6e1f7b47f2086aba1903a6258bf
oder
https://android-review.googlesource.com/#/c/113331/
Problem: https://code.google.com/p/android/issues/detail?id=78761
Den offiziellen patch ist https://android-review.googlesource.com/#/c/113201/dass bereits zusammengeführt wurde, denke ich, es wäre behoben in der nächsten version.
Bereits behoben 0.14.2 (2014/11/10). (aus http://tools.android.com/tech-docs/new-build-system)
InformationsquelleAutor der Antwort Andrew Chen
War ich mit der neuesten Android-Studio und nach dem offiziellen Dokument zu und fügt die Unterstützung multidex https://developer.android.com/studio/build/multidex.html . Aber ich habe immer noch die gleiche exception. Ich verbrachte eine Menge Zeit, es zu lösen. Endlich fand ich die Ursache wurde ich aktiviert, "Java Exception Breakpoints - ohne Ausnahme -" und "Exception-Breakpoints - Wenn alle geworfen wird". Nachdem ich diese deaktiviert, die app lief ohne Probleme.
Folgen Sie einfach dem offiziellen Dokument über multidex https://developer.android.com/studio/build/multidex.html . Es funktioniert.
InformationsquelleAutor der Antwort Vince Yuan
Ich hatte vor kurzem dieses Problem. Trotz keinerlei änderung an meiner Konfiguration dieser Fehler begann aufzutreten. Ich habe versucht, alle vorgeschlagenen Lösungen einschließlich löschen der virtual device und erstellen eine neue.
Aber ich habe bemerkt, dass wenn ich baute eine APK und schleppte es in den emulator zu installieren, es funktionierte.
In der Reinigung am Ende der Projekt-und re-ausgeführt und dann hat es geklappt.
InformationsquelleAutor der Antwort sorter
Einrichten Ihres app-Projekts für die Verwendung einer multidex-Konfiguration erfordert, dass Sie folgende änderungen vornehmen, um Ihr app-Projekt, abhängig von der Mindest-Android-version, die Ihre app unterstützt.
Wenn Ihr minSdkVersion gesetzt ist, 21 oder höher, alle Sie tun müssen ist, legen Sie multiDexEnabled zu wahren, in Ihrem Modul-level zu bauen.gradle-Datei, wie hier gezeigt:
Allerdings, wenn Ihr minSdkVersion gesetzt ist, um 20 oder niedriger sind, dann müssen Sie das multidex-support-Bibliothek wie folgt:
Ändern Sie die Modul-Ebene zu bauen.gradle-Datei zu aktivieren multidex und fügen Sie den multidex-Bibliothek als Abhängigkeit, wie hier gezeigt:
Je nachdem, ob Sie überschreiben Sie die Application-Klasse, führen Sie einen der folgenden Schritte aus:
Wenn Sie nicht überschreiben die Anwendung Klasse, Bearbeiten Sie Ihre manifest-Datei zu setzen android:name im tag wie folgt:
Wenn Sie dies tun, überschreiben Sie die Anwendung Klasse, ändern Sie es zu erweitern MultiDexApplication (wenn möglich) wie folgt:
Oder wenn Sie tun, überschreiben Sie die Anwendung Klasse, aber es ist nicht möglich, ändern Sie die Basisklasse, dann können Sie stattdessen überschreiben Sie die attachBaseContext () - Methode, und rufen Sie MultiDex.installieren Sie(diese) zu ermöglichen multidex:
InformationsquelleAutor der Antwort Chirag Maheshwari