1

我試圖將我的項目更新到targetSdk 23,但是我決定在給定所有棄用項目的情況下我不能滿足要求。我不想通過它,所以我恢復到舊版本的mercurial,現在我得到的是這個錯誤,我不能讓該死的應用程序再次運行。什麼可能會出錯?路徑上沒有找到類DexPathList

12-21 02:36:00.545  437-437/com.elgami.customizer E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.elgami.customizer, PID: 437 
    java.lang.RuntimeException: Unable to instantiate application com.elgami.application.GlobalApplication: java.lang.ClassNotFoundException: Didn't find class "com.elgami.application.GlobalApplication" on path: DexPathList[[zip file "/data/app/com.elgami.customizer-1/base.apk"],nativeLibraryDirectories=[/data/app/com.elgami.customizer-1/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 "com.elgami.application.GlobalApplication" on path: DexPathList[[zip file "/data/app/com.elgami.customizer-1/base.apk"],nativeLibraryDirectories=[/data/app/com.elgami.customizer-1/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: No original dex files found for dex location /data/app/com.elgami.customizer-1/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: com.elgami.application.GlobalApplication 
      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 

我的構建文件:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 'Google Inc.:Google APIs:21' 
    buildToolsVersion '21.1.2' 

    defaultConfig { 
     applicationId "com.elgami.customizer" 
     minSdkVersion 14 
     targetSdkVersion 21 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      //runProguard false 
      //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

repositories { 
    mavenCentral() 
    maven { url "https://jitpack.io" } 
} 

dependencies { 
    compile 'com.ogaclejapan.smarttablayout:library:[email protected]' 
    compile 'com.github.antonyt:InfiniteViewPager:v1.0.0' 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    // recyclerview 
    compile 'com.android.support:recyclerview-v7:23.1.1' 
    // google analytics 
    compile 'com.google.android.gms:play-services-analytics:8.3.0' 
    // pager sliding strip 
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1' 
    // http library (for using beanstream REST) 
    compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1' 
    // amaazon S3 uploads 
    compile 'com.amazonaws:aws-android-sdk-s3:2.1.+' 
    // paypal purchasing 
    compile files('libs/PayPalAndroidSDK-2.7.1.jar') 
    // Module dependency on ParseLoginUI library sources 
    compile project(':ParseLoginUI') 
    // Parse libs 
    compile files('libs/ParseCrashReporting-1.9.2.jar') 
    compile files('libs/Parse-1.9.1.jar') 
    compile files('libs/ParseFacebookUtilsV4-1.9.1.jar') 
    // android support v4 
    compile files('libs/android-support-v4.jar') 
    // facebook SDK 
    compile 'com.facebook.android:facebook-android-sdk:4.1.0' 
    //butterknife 
    compile 'com.jakewharton:butterknife:6.1.0' 
    // Subsampling-scale-image-view (for templating) 
    //compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.1.4' 
    compile files('libs/AppRater.jar') 
} 
+0

我的應用程序甚至沒有在調試模式下運行。爲什麼我不得不在一段時間前工作的時候添加multi-dex支持?我嘗試更新到Sdk 23後,所做的只是恢復到較舊的版本。可能是什麼導致了這種情況? – santafebound

回答

4

Android應用(APK)文件包含 可執行的字節碼文件的Dalvik可執行文件(DEX)文件,其中包含編譯 代碼的形式用於運行您的應用程序。 Dalvik可執行規範將可在單個DEX 文件中引用的方法的總數限制爲65,536,包括Android框架方法,庫方法, 和您自己的代碼中的方法。超越此限制要求您配置應用程序生成過程以生成多個DEX 文件(稱爲multidex配置)。

  1. 更改您的搖籃構建配置,使multidex
  2. 修改您的清單引用MultiDexApplication類

修改應用搖籃建立文件配置包括支持庫並啓用multidex輸出。

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

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

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

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

欲瞭解更多詳情,您可以訪問

DexIndexOverflowException Only When Running Tests

+1

我已經設置multidex啓用和目標和編譯sdk是25.它運行在除了我的設備之外的其他設備sony xperia xa – Prasad

+5

@Prasad禁用即時運行 –

相關問題