Android External Libraries中多余的各种support库

大尾巴狼
  • 245

问题是这样发生的,我在项目中有用到RecycleView然后我就引入了他,但是gradle报错,具体的意思是:

  1. RecycleView的支持库的版本号和其他库不一致,找到了其他的版本号云云,应该使用一致的版本号来避免编译报错。
  2. 当前的RecycleView的版本号(28.x.x),高于编译版本号(26)。

我尝试着把RecycleView的版本号改成和当前编译版本相同的版本号,来修复上面的2号问题,但是之后的第一个问题还是存在,我尝试打开了 Android Studio 左侧栏的, External Libraries 查看到了不同的版本号,如下图:

clipboard.png

但是在我的build.gradle中根本没有导入这些支持库呀,难道是我依赖了其他的库,然后其他库依赖了这些库导致被引入的吗?

然后我尝试着将这些版本不一致的support库,一个一个的添加到build.gradle中,并且明确指定其版本号为26.1.0

    api "org.jetbrains.anko:anko:$anko_version"
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    //Rx系列
    api "io.reactivex.rxjava2:rxjava:$rxjava_version"
    api "io.reactivex.rxjava2:rxandroid:$rxandroid_version"

    //Retrofit框架 和 okhttp框架
    api "com.squareup.retrofit2:retrofit:$retrofit_version"
    api "com.squareup.retrofit2:converter-gson:$retrofit_version"

    //api "com.squareup.retrofit2:adapter-rxjava:$retrofit_version"
    api "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"

    //okHttp
    api "com.squareup.okhttp3:logging-interceptor:$okhttp_version"
    api "com.squareup.okhttp3:okhttp:$okhttp_version"

    //dagger2
    compile "com.google.dagger:dagger:$dagger2_version"
    kapt "com.google.dagger:dagger-compiler:$dagger2_version"

    //RxLifeCycle
    api "com.trello.rxlifecycle2:rxlifecycle-kotlin:$rx_lifecycle_version"
    api "com.trello.rxlifecycle2:rxlifecycle-components:$rx_lifecycle_version"

    //Glide
    api "com.github.bumptech.glide:glide:$glide_version"
    kapt "com.github.bumptech.glide:compiler:$glide_version"

    //由于导入支持库之后,版本不一致导致编译不通过。现在统一所有支持库的版本号一致为:26.1.0
    api "com.android.support:animated-vector-drawable:26.1.0"
    api "com.android.support:appcompat-v7:26.1.0"
    api "com.android.support:support-core-utils:26.1.0"
    api "com.android.support:support-annotations:26.1.0"
    api "com.android.support:support-compat:26.1.0"
    api "com.android.support:support-core-ui:26.1.0"
    api "com.android.support:support-fragment:26.1.0"
    api "com.android.support:support-v4:26.1.0"
    api "com.android.support:recyclerview-v7:26.1.0"

由于是用Android Studio 3.0.1在Deepin linux系统上操作的,当时我就没管了,今天来公司,用公司 Windows 10上面的Android Studio 3.3导入 之后这些不同版本号的库依旧存在于External Libraries中,每个库都有2分,而且版本号不一致。

clipboard.png

请问大佬们,怎么解决这个问题啊,我是多Module模式,使用的api方式引入, 会不会是这方面的问题? 求解!~~~

回复
阅读 6.4k
2 个回答

在Gradle中强制指定依赖版本就行

configurations.all {
   resolutionStrategy {
       force 'com.android.support:recyclerview-v7:26.1.0'
   }
}

改成implementation

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏