1. 程式人生 > >java.lang.ClassNotFoundException:DexPathList[[zip file "XX,nativeLibraryDirectories=[/data/app-lib

java.lang.ClassNotFoundException:DexPathList[[zip file "XX,nativeLibraryDirectories=[/data/app-lib

一、話不多說,直接貼貼出程式碼**

 java.lang.RuntimeException: Unable to get provider com.qiyukf.nim.uikit.provider.UnicornProvider: java.lang.ClassNotFoundException: Didn't find class "com.qiyukf.nim.uikit.provider.UnicornProvider" on path: DexPathList[[zip file "/data/app/vestmentadviser-1.apk"],nativeLibraryDirectories=[/data/app-lib/vestmentadviser-1
, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:4795) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4387) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4327) at android.app.ActivityThread.access$1500
(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5019) 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:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.qiyukf.nim.uikit.provider.UnicornProvider" on path: DexPathList[[zip file "/data/app/vestmentadviser-1.apk"],nativeLibraryDirectories=[/data/app-lib/vestmentadviser-1, /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.ActivityThread.installProvider(ActivityThread.java:4780)

在測試的時候發現,debug版本出問題,正式版簽名的沒有問題,這個是debug出來的錯誤,而且還不是每個手機都出來,只是個別的,由於測試機資源有限,這個bug就擱置了,今天閒了,就把這個問題解決了!

翻譯的意思是找個這個類,這個是七魚的sdk我又重新看了七魚的文件,沒有一點錯,給他們技術說,他們技術也沒有說出來具體的解決方法,只能靠我了!

二、下面來說解決方法

我們來分析一下,為啥debug會出現問題,release會出現問題,看了gradle檔案發現,debug沒有被混餚,release混淆了!
還有部分手機提示沒有七魚sdk沒有被初始化,明明初始化了,為啥會提示這個呢!讓我想起MultiDex,我再看看,我的配置檔案,MultiDex也添加了啊,最後發現sdk有點多啊,MultiDex得提前初始化放到onCreate根本不行,最後想到了一個attachBaseContext()方法,把MultiDex初始化放在這個方法,bug完美解決!
為了方便我再說一下MultiDex的配置

1、Gradle配置

     // 多dex配置
    implementation 'com.android.support:multidex:1.0.3'

     defaultConfig {
      //方法數超限時分割dex
        multiDexEnabled true
     }

2、在應用的Application 類重寫方法:

override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
       //講Multidex注入專案中
        MultiDex.install(this)

    }

程式碼我用的是kotlin,java的朋友,找到這個方法實現一下就可以了

附自己QQ群,Android學習交流群 群號 543671130,有問題可以交流!!!