Android Multidex RuntimeException

Ich versuche ein problem zu lösen, mit dem die Android-app verfügt über 65k Methoden.

Ich habe Google docs über Multidex Unterstützung, aber ich bin immer noch nicht führen Sie es erfolgreich. Es scheint, dass das problem erscheint nur auf den SDK von weniger als 21, wenn ich da angeben minSdkVersion 21 funktioniert es gut, allerdings sobald ich es auf minSdkVersion 15 ist, erhalte ich folgende exception.

FATAL EXCEPTION: main
   java.lang.RuntimeException: Unable to instantiate application custom.package.name.MyApplication: java.lang.ClassNotFoundException: Didn't find class "custom.package.name.MyApplication" on path: DexPathList[[zip file "/data/app/custom.package.name-2/base.apk"],nativeLibraryDirectories=[/data/app/custom.package.name-2/lib/arm, /vendor/lib, /system/lib]]
      at android.app.LoadedApk.makeApplication(LoadedApk.java:578)
      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)
      at android.app.ActivityThread.-wrap1(ActivityThread.java)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:148)
      at android.app.ActivityThread.main(ActivityThread.java:5417)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

   Caused by: java.lang.ClassNotFoundException: Didn't find class "custom.package.name.MyApplication" on path: DexPathList[[zip file "/data/app/custom.package.name-2/base.apk"],nativeLibraryDirectories=[/data/app/custom.package.name-2/lib/arm, /vendor/lib, /system/lib]]
      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
      at android.app.Instrumentation.newApplication(Instrumentation.java:981)
      at android.app.LoadedApk.makeApplication(LoadedApk.java:573)
      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680) 
      at android.app.ActivityThread.-wrap1(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
   Suppressed: java.io.IOException: Failed to open dex files from /data/app/custom.package.name-2/base.apk
      at dalvik.system.DexFile.openDexFileNative(Native Method)
      at dalvik.system.DexFile.openDexFile(DexFile.java:295)
      at dalvik.system.DexFile.<init>(DexFile.java:80)
      at dalvik.system.DexFile.<init>(DexFile.java:59)
      at dalvik.system.DexPathList.loadDexFile(DexPathList.java:279)
      at dalvik.system.DexPathList.makePathElements(DexPathList.java:248)
      at dalvik.system.DexPathList.<init>(DexPathList.java:120)
      at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
      at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:65)
      at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:58)
      at android.app.LoadedApk.getClassLoader(LoadedApk.java:376)
      at android.app.LoadedApk.makeApplication(LoadedApk.java:568)
            ... 9 more
   Suppressed: java.lang.ClassNotFoundException: custom.package.name.MyApplication
      at java.lang.Class.classForName(Native Method)
      at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
      at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
            ... 12 more
   Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

Logcat vor schwerwiegende Ausnahme

W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/custom.package.name-2/base.apk --oat-file=/data/dalvik-cache/arm/data@app@custom.package.name-2-2@base.apk@classes.dex) because non-0 exit status
W/art: Failure to verify dex file '/data/app/ccustom.package.name-2-2/base.apk': Invalid method name: '_clinit@1433781298707#0'
W/System: ClassLoader referenced unknown path: /data/app/custom.package.name-2-2/lib/arm

Hier ist, was ich bisher getan habe:

  • erstellte Klasse MyApplication genannt, erstreckt Anwendung und angegebenen es in AndroidManifest.xml Datei

  • Hinzugefügt Abhängigkeit zu bauen.gradle-Datei

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

  • aktiviert multidex in bauen.gradle

    multiDexEnabled true

  • aktiviert multidex in der Klasse MyApplication

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

Vielen Dank im Voraus für jede Hilfe!!!

  • haben Sie versucht, mit Hilfe erstreckt sich MultiDexApplication, anstatt erstreckt Anwendung?
  • Ja, ich habe es versucht, aber die immer noch gleiche Problem
InformationsquelleAutor jpact | 2015-12-11
Schreibe einen Kommentar