Android 开发之v4库冲突问题解决方案说明 GSYVideoPlayer statusbaruitl

问题背景

Android Studio 开发时使用到了 GSYVideoPlayer 开源的播放器框架,配置信息如下:

implementation 'com.shuyu:GSYVideoPlayer:6.0.1'

在这之前,已经配置了support库:

implementation 'com.android.support:appcompat-v7:28.0.0'

运行时报错如下:

Duplicate class android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActionBarDrawerToggle found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActionBarDrawerToggle$Delegate found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActionBarDrawerToggle$DelegateProvider found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActionBarDrawerToggle$SlideDrawable found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActivityCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActivityCompat$SharedElementCallback21Impl found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActivityManagerCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.ActivityOptionsCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.BackStackRecord found in modules classes.jar (com.android.support:support-fragment:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.BackStackRecord$Op found in modules classes.jar (com.android.support:support-fragment:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.BackStackState found in modules classes.jar (com.android.support:support-fragment:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.BackStackState$1 found in modules classes.jar (com.android.support:support-fragment:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.DialogFragment found in modules classes.jar (com.android.support:support-fragment:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
...
Duplicate class android.support.v4.app.NotificationBuilderWithBuilderAccessor found in modules classes.jar (com.android.support:support-compat:28.0.0) and internal_impl-22.2.1.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Action found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Action$Builder found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Action$Extender found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Action$WearableExtender found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$BigPictureStyle found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$BigTextStyle found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Builder found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$CarExtender found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$CarExtender$UnreadConversation found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$CarExtender$UnreadConversation$Builder found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Extender found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$InboxStyle found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$Style found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompat$WearableExtender found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompatExtras found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.app.NotificationCompatJellybean found in modules classes.jar (com.android.support:support-compat:28.0.0) and internal_impl-22.2.1.jar (com.android.support:support-v4:22.2.1)
...
Duplicate class android.support.v4.widget.ViewDragHelper$1 found in modules classes.jar (com.android.support:customview:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.widget.ViewDragHelper$2 found in modules classes.jar (com.android.support:customview:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)
Duplicate class android.support.v4.widget.ViewDragHelper$Callback found in modules classes.jar (com.android.support:customview:28.0.0) and classes.jar (com.android.support:support-v4:22.2.1)

Go to the documentation to learn how to Fix dependency resolution errors.

通过报错的内容大概可以猜测出来是播放器使用的V4库和我们配置的V4库出现冲突了,而且是版本冲突。

 

解决方案

解决方案无非就是移除项目中的 support-v4 或者 GSYVideoPlayer 中的 support-v4 来保持唯一性。

方案1:移除项目中的support-v4

缺点:项目无法使用 support-v4 下的 API

compile('com.android.support:appcompat-v7:23.3.0') {
  exclude group: "com.android.support", module: "support-v4"
}

方案2:移除 GSYVideoPlayer 中的 support-v4

优点:不影响项目使用 support-v4

缺点:如果项目涉及到多个开源框架出现此问题要在开源框架下个个移除

implementation ('com.shuyu:GSYVideoPlayer:6.0.1') {
    exclude module: 'support-v4'
    exclude group: 'com.android.support'
}

一般情况下,我们选择第二种方式来解决冲突,这样更可控一些。

 

 

 

二 StatusbarUtils  demo运行时也出现相同问题

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.ashokvarma.android:bottom-navigation-bar:1.3.0'
//    implementation 'com.r0adkll:slidableactivity:2.0.5'{
//
//    }
    implementation ('com.r0adkll:slidableactivity:2.0.5') {
        exclude module: 'support-v4'
        exclude group: 'com.android.support'
    }
//    compile project(path: ':library')
//        compile 'com.jaeger.statusbaruitl:library:1.3.2'
    implementation 'com.jaeger.statusbarutil:library:1.5.1'

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值