从“编译”切换到“实现”会出现DexPathList错误

时间:2019-05-03 21:48:54

标签: android gradle android-gradle

我正在尝试更新我的依赖项以使用新的实现/ api规范,而不是进行编译。这是针对我正在编写的通用库,然后通过jitpack在我的应用中使用。

当我从编译切换到实现的简单切换时,在我的应用中使用库时出现以下错误(只是重要的位):

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/bumptech/glide/request/RequestOptions;

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.bumptech.glide.request.RequestOptions" on path: DexPathList

我尝试清洁和重建,但没有帮助。我切换回编译的第二个调用一切正常。

我会注意到该库在所有情况下都可以正常构建。

以下用法有效(尽管警告我编译将被弃用):

    compile fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    compile 'com.github.ybq:Android-SpinKit:1.2.0'
    compile 'io.reactivex.rxjava2:rxandroid:2.1.0'
    compile 'androidx.appcompat:appcompat:1.0.2'
    compile "com.github.bumptech.glide:glide:4.4.0"
    compile 'androidx.recyclerview:recyclerview:1.0.0'
    compile "com.github.chrisbanes:PhotoView:1.3.1"
    compile 'com.google.android.material:material:1.0.0'

以下给出了以上错误(如果我使用api而不是实现,也会给出错误):

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation 'com.github.ybq:Android-SpinKit:1.2.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation "com.github.bumptech.glide:glide:4.4.0"
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation "com.github.chrisbanes:PhotoView:1.3.1"
    implementation 'com.google.android.material:material:1.0.0'

我还要补充一点,如果我只是将glide切换为编译,那么它会给出相同的错误,但相关性有所不同。谁能帮我解决这个问题?我现在可以继续编译,但我想对其进行更新。

1 个答案:

答案 0 :(得分:1)

经过数小时的调试,我终于弄清楚了

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'

将我的库中的maven gradle插件从1.5更新到2.1可以解决此问题