Android Studio升级到3.0后的Didn't

作者: 书柜里的松鼠 | 来源:发表于2018-01-16 14:27 被阅读1035次

    原先跑得好好的项目,在studio3里面build出来后居然在好几台Android 4.2的机器上运行不了。(Android 5以上的机器就没发现问题。)
    都是一启动就爆错误:

    java.lang.RuntimeException: Unable to get provider com.alibaba.sdk.android.feedback.util.FBFileProvider: java.lang.ClassNotFoundException: Didn't find class "com.alibaba.sdk.android.feedback.util.FBFileProvider" on path: DexPathList[dexElements=[zip file "/data/app/com.boosj.boosjapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.boosj.boosjapp-1, /vendor/lib, /system/lib]]
    

    配置调了半天并没有什么卵用。
    后来搜到一篇文章说是多重dex加载机制上的问题。
    解决方法如下。

    1.multiDexEnabled true设置

    除了在build.gradle的defaultConfig里配置multiDexEnabled true外,还要在dependencies内加入implementation 'com.android.support:multidex:1.0.0'

    defaultConfig {
            multiDexEnabled true
        }
    
    dependencies {
        implementation 'com.android.support:multidex:1.0.0'
    }
    

    2.在Application中添加MultiDex.install(this);

    需要注意的是这句需要写在attachBaseContext方法里:

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

    搞定,收工。


    其实原理还没整明白,改天翻一下源码理解一下。


    补充说明,偶尔修改类文件名之后也会报DexPathList相关的错误,这种一般clear project再rebuild project就可以解决了。

    相关文章

      网友评论

        本文标题:Android Studio升级到3.0后的Didn't

        本文链接:https://www.haomeiwen.com/subject/hrcsoxtx.html