[持续更新] Android 三方库依赖重复排除 Duplicate class exclude

android里面经常使用的一些库,比如RxJava/Okhttp/Retrofit,很多三方库都有依赖,如果使用的多个三方库都引用了同一个库就会导致编译报重复类,导致编译失败,比如报错如下:
Duplicate class io.reactivex.android.MainThreadDisposable found in modules jetified-xxxSdk_20221031_141601-runtime (:xxxSdk_20221031_141601:) and jetified-rxandroid-2.1.1-runtime (io.reactivex.rxjava2:rxandroid:2.1.1)

这时就需要对红引入的三方库做导入排除,格式如下:

implementation ("com.github.bumptech.glide:glide:4.12.0"){//注意这种implementation排除配置需要加上左右括号
    exclude group: 'com.squareup.okio', module: 'okio'
}

其中module是可选的,代表在group包下精确匹配,如果只配置exclude group就是通配处理,至于如何找这个group和module可去github上去找源码查看包名等或采用JD-GUI这个软件解析三方包jar后查看META-INF里面的MANIFEST.MF里面的Automatic-Module-Name和Bundle-Name值,具体两个值如何对应group和module,需要尝试才行,如下图:


okio

reactive-streams

这里附上常用的排除配置,后续有新增将继续更新:

implementation ("com.github.pwittchen:reactivenetwork-rx2:3.0.8"){
    exclude group: 'org.reactivestreams', module: 'reactive-streams'
    exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
    exclude group: 'io.reactivex.rxjava2', module: 'rxandroid'
}
implementation ("com.airbnb.android:lottie:5.2.0"){
    exclude group: 'com.squareup.okio', module: 'okio'
}
implementation ("com.github.puyang1017:PictureSelector:v2.7.0"){
    exclude group: 'com.squareup.okio', module: 'okio'
}
implementation ("com.github.bumptech.glide:glide:4.12.0"){
    exclude group: 'com.squareup.okio', module: 'okio'
}

你可能感兴趣的:([持续更新] Android 三方库依赖重复排除 Duplicate class exclude)