引入GSYVideoPlayer,依赖冲突

包依赖冲突可以使用exclude来去掉modul引用,https://blog.csdn.net/richiezhu/article/details/80320185
``
implementation('com.shuyu:gsyVideoPlayer-java:7.0.1') {
exclude group: 'androidx.core'
}

compile('com.facebook.fresco:fresco:0.10.0') {
exclude module: 'support-v4'
}
``

可以使用./gradlew tasks --all来查找拥有的任务。 其中会有类似yourproject:dependencies ,你可以运行它来获得这样的依赖树:
./gradlew yourproject:dependencies
gsyVideoPlayer一直报V4冲突,用exclude v4后还是报错:
Program type already present: android.support.v4.os.ResultReceiver

通过上述命令./gradlew tasks --all(ubuntu 启用gradlew需要加./, 具体查找步骤可看
https://blog.csdn.net/Calvin_zhou/article/details/80880501)查看引入,发现7.0上版本引入AndroidX了,里面的androidx.core引用的V4引用 的版本和项目版本V4版本不一样,导致冲突报错,因为项目中还未引入AndroidX,因此将版本降为6.0,编译通过。

下面是git库中,大家对编译依赖所提的问题,这个留在以后备用。
引入GSYVideoPlayer后,androidx.core版本为1.1.0-alpha02,该版本有bug,ComponentActivity没有LifecycleOwner接口。
解决方法:

implementation('com.shuyu:gsyVideoPlayer-java:7.0.1') {
    exclude group: 'androidx.core'
}

androidx.core版本还是1.1.0-alpha02
百度半天才发现enforcedPlatform可以强制覆盖版本。。。

implementation enforcedPlatform('androidx.core:core:1.0.2')

如果在使用androidx库时, 又不小心间接使用了其他的老库, 可能会遇到如下的报错:
Program type already present: android.support.v4.os.ResultReceiver
Error: Program type already present: android.support.v4.app.INotificationSideChannel
Error: Program type already present: xxxxxxxx(此处可能会有各种变形)
解决方法:

可以尝试在gradle.properties中添加:
android.useAndroidX=true
android.enableJetifier=true

https://www.jianshu.com/p/0cfd76a74c60

你可能感兴趣的:(引入GSYVideoPlayer,依赖冲突)