所有com.android.support库都必须使用完全相同的版本规范


788

更新到android studio 2.3后,我收到此错误消息。我知道这只是应用正常运行的提示,但确实很奇怪。

所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本25.1.1,24.0.0。示例包括com.android.support:animated-vector-drawable:25.1.1和com.android.support:mediarouter-v7:24.0.0

在此处输入图片说明

我的gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

将此添加到您的projectBuild.Gradle子项目{project.configurations.all {resolutionStrategy.eachDependency {详细信息-> if(details.requested.group =='com.android.support'&&!details.requested.name.contains(' ')){details.useVersion“ 26. +”}}}}
Sunil Chaudhary

Answers:


906

您可以使用以下解决方案之一解决此问题:

更新:

从Android Studio 3.0开始,它变得更加容易,因为它现在显示了一个更有用的提示,因此我们只需要遵循此提示即可。
例如: 1]

所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本27.0.2、26.1.0。示例包括com.android.support:animated-vector-drawable:27.0.2和com.android.support:customtabs:26.1.0

某些库,工具或库的组合不兼容或可能导致错误。一种不兼容的情况是使用不是最新版本的Android支持库版本进行编译(或者特别是低于targetSdkVersion的版本)。

解决方案:
显式添加具有旧版本但具有新版本号的库。
就我而言,com.android.support:customtabs:26.1.0因此我需要添加:

implementation "com.android.support:customtabs:27.0.2"  

即:从第二项中获取库,并使用第一项中的版本号实现它。

注意:请不要忘记立即按sync,以便gradle可以重建依赖关系图并查看是否还有更多冲突。

说明:
错误消息可能会使您感到困惑,因为您没有使用它,customtabs所以我有冲突!!
好吧..您没有直接使用它,但是您的一个库在customtabs内部使用了旧版本,因此您需要直接要求它。

如果您想知道哪个库是旧版本的原因,并且可能要求作者更新他的库(运行Gradle依赖性报告),请参阅旧答案以了解具体方法。

注意这个


旧答案:

CommonsWare的启发答案

运行Gradle依赖性报告以查看完整的依赖性树是什么。

从那里,您将看到您的哪个库要求使用其他版本的Android支持库。无论要求什么,您都可以直接在25.2.0版本中要求它,或者使用Gradle的其他冲突解决方法来获得相同的版本。


更新:

从gradle插件版本开始:3.0 compile已被替换,implementationapi查看此答案以了解区别。

因此改用:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

或对于Windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

并搜索有冲突的版本。

对我来说,删除后错误消失了 com.google.android.gms:play-services:10.2.0

并且仅包含com.google.android.gms:play-services-location:10.2.0并且,com.google.android.gms:play-services-maps:10.2.0因为它们是我使用的仅有的两个播放服务。

我认为这gms:play-services取决于支持库的某些旧组件,因此我们需要自己明确添加它们。


对于AS 3.0或更早的版本。

跑:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

例:

./gradlew -q dependencies app:dependencies --configuration implementation

如果有人知道新的Gradle插件中有更好的方法,请告诉我。


3
com.google.android.gms:play-services:10.2.0支持SDK 14及更高版本,如果要在SDK 14以下使用,则需要使用stackoverflow.com/a/42315590/624849110.0.1
Sneh Pandya

2
@humazed noob问题,如何在Android Studio中运行命令?
Haikal Nashuha

1
在终端中,但首先,尝试尝试玩游戏服务
令人惊讶的

1
我是唯一认为这是精神错乱的人吗?我只想要admob和facebook,而他们拒绝一起工作
周杰伦(Jay),

3
指出examples include错误消息中的文本显示的是您自己项目中的实际示例,而不是问题类型的一般示例,可能会有所帮助。从第二项中获取库,并使用第一项中的版本号实现它。
本杰明·克什纳

203
  1. 转到project/.idea/libraries文件系统上的文件夹,查看哪些库不同。
  2. 您将必须在文件中手动包含具有相同版本的这些库build.gradle
  3. 然后,同步您的项目。

例如:

compile 'com.android.support:appcompat-v7:25.2.0'

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'

好点子。我从没想过要看哪一个实际上是错误的。:S谢谢!
Tobias Reich'3

不能使用gradle自动解决方法的情况下工作,谢谢
Odaym

10
在/ Project Files /我的项目/.idea/libraries中,有多个具有不同版本的支持文件。现在我如何知道哪个模块或依赖项正在使用它?
Satpal Yadav

2
@SatpalYadav我搜索的版本与最新版本不匹配(我在我的应用中使用)。例如,我使用support:design:25.3.1,但material-dialogs使用support-v13:25.1.1。所以我添加了support-v13:25.3.1,错误消失了。
Hardysim '17

1
到目前为止,这对我来说是最好的解决方案,但是如何覆盖较新的库?
Mateusz Kaflowski,

149

对于所有情况,不仅限于这些版本或库:

注意小信息窗口,它说明了有关错误的内容,它指出了您必须更改和添加的示例

在这种情况下:

找到版本25.1.1,24.0.0。示例包括com.android.support:animated-vector-drawable:25.1.1和com.android.support:mediarouter-v7:24.0.0

您的

com.android.support:animated-vector-drawable:25.1.1

是25.1.1版,而您的

com.android.support:mediarouter-v7:24.0.0

版本是24.0.0,因此您必须添加具有相同版本的mediarouter:

com.android.support:mediarouter-v7:25.1.1

并针对小信息窗口显示的每个示例执行此操作,在这种情况下, 所有不具有25.1.1版本的库。

修复指定的库后,必须同步gradle才能查看下一个必须更改的库和包。

重要:

如果您没有显式使用一个或多个指定的库,并且出现错误,则意味着该错误正在由另一个库在内部使用,无论如何都要显式编译它。

您还可以使用另一种方法查看您实际上正在编译的所有库的版本的差异(例如运行gradle依赖关系报告或转到您的库文件),真正的目标是编译您正在使用的所有库。相同的版本


1
多谢,您能解释一下support:mediarouter到底是什么吗?
MRID

1
我认为这是您指出的,我们大多数人都已经忽略了。即-“请注意有关错误的小信息窗口...。”。谢谢,这使我对实际情况有了更好的了解。
Yo Apps

103

解决问题的最佳方法是实施Android Studio建议的所有'com.android.support:...'

(与使用哪个支持版本无关– 27.1.1、28.0.0等)

将光标置于错误行,例如

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

Android Studio会提示您哪个“ com.android.support:...”与“ com.android.support:appcompat-v7:28.0.0”的版本不同

所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本28.0.0、27.1.0、27.0.2。示例包括com.android.support:animated-vector-drawable:28.0.0和com.android.support:exifinterface:27.1.0

因此添加com.android.support:animated-vector-drawable:28.0.0com.android.support:exifinterface:28.0.0。现在同步gradle文件。

一步一步尝试实现所有建议的'com.android.support:...',直到这一行没有错误为止 implementation 'com.android.support:appcompat-v7:28.0.0'

就我而言,我添加了

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

implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

所有这些依赖关系,对于您来说可能会有所不同。


我手动添加了“实现'com.android.support:animated-vector-drawable:28.0.0'”和“实现'com.android.support:support-media-compat:28.0.0'”,但“实现” com.android.support:appcompat-v7:28.0.0' “仍然由红色下划线
AAEM

@AAEM如果将光标放在错误行上,它将显示您接下来应添加的依赖项。请将所有依赖项添加到相同版本并同步gradle文件。如果再次显示错误,请再次执行以下步骤,直到没有错误为止。
Adarsh Vijayan P

100

将其添加到build.gradle(Module:app)的末尾:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.1'
        }
     }

   }
}

确保将``25.3.1''替换为要用于所有依赖项的android支持库的版本,它不应低于您的标准sdk版本

比重新同步gradle


3
这就是我所需要的,即使我在顶层指定了一个较小的版本,我的依赖项之一还是以某种方式引入了27.0.1。出于好奇,为什么要排除“ multidex”?

4
这为我节省了一天。但是,每次经过时,这种android开发都变得更加分散。在推出之前,人们需要真正地仔细检查每个支持库。我们并不总是有足够的时间来浏览每个新的支持版本,因为我们希望专注于构建我们的产品,而不是全部经历。总是令人沮丧
larrytech

1
@ThinkTwiceCodeOnce您可以在此处了解有关groovy及其inteliji插件的更多信息:jetbrains.com/help/idea/getting-started-with-groovy.html
ezzou

1
你是个救命的人。应该多次对此进行投票!
imin

1
这应该是解决方案...赞成
Ast

54

更新到Android Studio 2.3之后,我遇到了完全相同的问题

将此行添加到依赖项解决了我的问题:

compile 'com.android.support:customtabs:25.2.0'

2
更新到Android Studio 2.3后,我遇到了完全相同的问题
Plugie

1
对于使用RenderScript的任何人,我都将其设置renderscriptSupportModeEnabled false为false。并添加了编译'com.android.support:customtabs:25.2.0'和错误。
Law Gimenez

1
@LawGimenez如果刚刚禁用它,我们应该如何使用renderscript?
dor506

3
看起来我的问题也是因为renderscript,但是如果我需要其他而不是customtabs的renderscript怎么办?
HendraWD

46

A)运行gradle dependencies./gradlew dependencies

B)查看您的树,找出哪个依赖项为您无法控制的依赖项指定了不同的支持库版本。

我没有意识到如果您的代码直接完全不使用依赖项,也会显示此警告。就我而言,Facebook指定了一些我没有使用过的支持库,您可以在下面看到大多数依赖项被我自己的25.2.0规范所覆盖,并用-> XXX(*)符号表示。卡视图和自定义选项卡库没有被任何人覆盖,因此即使我不使用它们,我也需要自己为这些请求25.2.0。

+--- com.facebook.android:facebook-android-sdk:4.17.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    \--- com.parse.bolts:bolts-android:1.4.0 (*)

如果gradle已经警告您并提供了示例...

示例包括com.android.support:animated-vector-drawable:25.1.1和com.android.support:mediarouter-v7:24.0.0

...如果您为较低的版本添加一些grep高亮显示,则gradle dependencies可能会更加冗长,因此更加容易:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'

1
根据您的解释,我了解到XXX-> YYY(*)表示XXX被YYY覆盖,这是一个很好的认识
Mercury

从字面上看,唯一有效的答案。
Stef

32

使用变量:执行以下操作将使您更容易确保对所有库使用相同版本

dependencies {

    ext {
        support_library_version = '25.2.0'
        google_play_services_version = '10.2.0'
    }

    //#####################################################################
    //          Support Library
    //#####################################################################
    compile "com.android.support:appcompat-v7:${support_library_version}"
    compile "com.android.support:palette-v7:${support_library_version}"
    compile "com.android.support:design:${support_library_version}"

    //#####################################################################
    //          Google Play Services
    //#####################################################################
    compile "com.google.android.gms:play-services-auth:${google_play_services_version}"
    compile "com.google.android.gms:play-services-ads:${google_play_services_version}"
    compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"

    //#####################################################################
    //          Firebase
    //#####################################################################
    compile "com.google.firebase:firebase-core:${google_play_services_version}"
    compile "com.google.firebase:firebase-auth:${google_play_services_version}"
    compile "com.google.firebase:firebase-messaging:${google_play_services_version}"

有关Google如何建议您处理此版本控制的更多信息,请参见本文:https : //developer.android.com/studio/build/index.html#top-level


感谢尊敬的Daniel F,我认为这是避免版本混合问题的最佳方法。
Hovanes Mosoyan '18

2
请只提供一个注意事项:如上面的链接中所建议,我们应该在TOP LEVEL GRADLE FILE中定义此类型变量,再次感谢)
Hovanes Mosoyan 18-4-14


19

如果出现相同的错误 appcompat

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

然后添加design解决了。

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

对我来说

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

包括appcompat-v7:23.1.1

.idea /库

没有vlcappcompat仅一个就足够了。


非常感谢,它确实有效,但是“ com.android.support:design:27.0.1”的作用是什么
Wessam El Mahdy

19

正如您已经看到了上面所有的答案和评论一样,但是这个答案是要清除一些新开发人员可能不容易获得的内容。

./gradlew -q依赖应用程序:依赖-配置编译

上面的那行无疑会拯救您的生命,但如何从上面的行的结果中得到确切的点。

当您从上述命令获取所有依赖关系图或列表时,则必须搜索代码中冲突的版本号。请参见下图。

在此处输入图片说明

在上图中,您可以看到23.4.0造成了问题,但这在gradle文件中找不到。所以现在这个版本号(23.4.0)将拯救我们。当我们有了这个数字时,我们将在上述命令结果的结果中找到这个数字,并将该依赖项直接直接导入到gradle文件中。请查看下图以获得清晰的视图。

您可以清楚地看到com.android.support:cardview-v7:23.4.0com.android.support:customtabs:23.4.0使用的是造成问题的版本。现在,只需从依赖项列表中复制这些行,并在我们的gradle文件中显式使用它,但带有更新的版本链接

实现“ com.android.support:cardview-v7:26.1.0”实现“ com.android.support:customtabs:26.1.0”


1
谢谢!对于较新版本的android studio,应该将其切换为实现而不是编译
Avi Parshan

是的,您说得对@AviParshan我们可以使用compile或api。api配置中出现的依赖项将传递给库的使用者,并因此而出现在使用者的编译类路径上。另一方面,在实现配置中找到的依赖项不会暴露给使用者,因此不会泄漏到使用者的编译类路径中。
anoopbryan2 '18

使用./gradlew -q依赖项app:dependencies-配置实现
Sumit

15

解决冲突的另一种方法是为所有依赖项强制使用正确的版本,如下所示:

dependencies {
            configurations.all {
                resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                    if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {
                        details.useVersion "27.0.2"
                    }
                }
    ...
    }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html


依赖性解析规则很难维护。必须手动维护它们的版本号和已实现的支持库中的任何更改。例如,Android Studio突出显示了可用的较新的lib版本,但未解释这些规则。
曼努埃尔

12

使用support-v13而不是support-v4

compile 'com.android.support:support-v13:25.2.0'

我对此有问题:编译'com.android.support:recyclerview-v7:25.2.0'–
Crime_Master_GoGo

与上述完全相同的错误:->所有com.android.support库都必须使用完全相同的版本规范Recyclerview
Crime_Master_GoGo

@Googli,请写出compileSdkVersionbuildToolsVersion依赖项。没问题compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support:design:25.2.0' compile 'com.android.support:support-v13:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0'
MehmetHanoğlu17年

12

在应用程序级别依赖项中添加这些

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

9

我的问题和你的相似。这里存在错误!

compile 'com.android.support:appcompat-v7:25.3.0'

所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本25.3.0,24.0.0。例子包括'com.android.support:animated-vector-drawable:25.3.0'和'com.android.support:mediarouter-v7:24.0.0'

看到的示例包括'com.android.support:animated-vector-drawable:25.3.0'和'com.android.support:mediarouter-v7:24.0.0'

只需在依赖项中添加这些代码,请确保版本相同。

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'

9

compile 'com.google.android.gms:play-services:10.2.4'使用compile 添加后,出现了相同的错误'com.android.support:appcompat-v7:25.3.1'

添加animated-vector-drawablemediarouter libs解决了该问题。

compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'

9

我有这个:

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

并得到此错误: 在此处输入图片说明

解决方案很简单-主要依赖项都是正确的,所以请假-任何第三方依赖项。一一删除,直到找到罪魁祸首,原来是facebook!它使用android支持库的版本27.0.2。我试图添加cardview版本27.1.1,但由于解决方案仍然足够简单,因此无法正常工作。

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

9

在升级到android studio 3.4和sdk版本到28.0.0之后,我已经遇到了这个问题。应用以下依赖项为我解决了这个问题。

    implementation 'com.android.support:exifinterface:28.0.0'

8

升级到android studio 2.3后,我用这两个解决了我的问题

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'

8

我之前也遇到过同样的问题,并且找到了解决方案。

我只是添加了具有其他版本但具有相同版本的库support:appcompat

对于您的错误,例如:

所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本25.1.1,24.0.0。示例包括com.android.support:animated-vector-drawable:25.1.1和com.android.support:mediarouter-v7:24.0.0

*解决方案是像这样编译这些库的版本:

compile 'com.android.support:mediarouter-v7:25.1.1'

-如果另一个库具有相同的问题,并且具有另一个版本,只需将其与您的support:appcompat版本一起编译

这解决了我的问题,希望它能解决您的问题。

最好的祝愿 :)


8

搜索并合并答案后,此问题的2018年版本对我有用:

1)在导航选项卡上将其更改为项目视图

2)导航到[YourProjectName] /。idea / libraries /

3)删除所有以Gradle__com_android_support_ [libraryName]开头的文件

例如:Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4)在gradle文件中定义一个变量,并使用它替换版本号,例如 $ {variableName}

Def变量:

ext {
    support_library_version = '28.0.0' //use the version of choice
}

使用变量:

implementation "com.android.support:cardview-v7:${support_library_version}"

gradle示例:

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}

1
这个答案需要更多的解释。可能会导致读者相信他们应该将整个gradle文件复制粘贴到他们的项目中。您应该解释为什么添加扩展名,以及为什么将某些支持库设置为gplaysvcs版本,将其他支持库设置为supportlib版本,而有些则未更改。
jungledev

8

新版本的android studio 3.x非常简单。

只需复制小于当前版本的版本,然后使用与当前版本相同的版本号显式添加即可。

找到版本27.1.1、27.1.0。示例包括com.android.support:animated-vector-drawable:27.1.1和com.android.support:exifinterface:27.1.0

只需复制该版本com.android.support:exifinterface:27.1.0并将其更改com.android.support:exifinterface:27.1.1为与当前使用的版本相同,然后将其添加到gradle依赖项中,如下所示。

implementation 'com.android.support:exifinterface:27.1.1'

注意:完成操作后,请不要忘记单击编辑器顶部的立即同步


7

在2018年更新中,针对此错误从项目结构中添加实现

implementation 'com.android.support:support-v13:28.0.0'

在项目模式-> 外部库中,您可以找到问题,就我而言,我使用的是版本28和发现的外部库 com.android.support:support-media-compat-26.0.0,这就是错误。

实施后support v13,它正在工作


在此实现中,红色下划线消失了。
Truong Hieu

6

您已经定义了其他任何要使用version 24.0.0而不是进行编译的依赖项25.1.1。请设置所有依赖项版本与相同25.1.1


我已经更新了答案,所有支持版本均具有相同的版本25.1.1
2017年

6

我必须在gradle中添加以下行以消除错误

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:preference-v7:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'

6

我运行了./gradlew任务--all,并检查了与目标版本(25.3.1)不同版本的依赖项。您将获得如下内容:

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1
app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1
app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1
app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1
app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1
app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1
app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1
app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1
app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1
app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1
app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1
app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1
app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1
app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1
app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1
app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1
app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0
app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12
app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4
app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7
app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16
app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1
app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6
app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4
app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6
app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6
app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6
app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6
app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7
app:prepareDebugAndroidTestDependencies
app:prepareDebugDependencies
app:prepareDebugUnitTestDependencies
app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5
app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16
app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1
app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

在这种情况下,我的目标是25.3.1,并且在运行此命令时有一些针对不同版本的依赖项。诀窍是在此列表中标识针对先前版本的依赖项,并通过在Gradle中导入最新版本的依赖项来覆盖该依赖项。


6

我有同样的问题,但是我通过添加这三行来解决了

implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:customtabs:27.1.1"
implementation 'com.android.support:mediarouter-v7:27.1.1'

现在一切都完美


6

这是我修复此警告的流程

build.gradle

android {
    compileSdkVersion ... // must same version (ex: 26)
    ...
}

dependencies {
    ...
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)

    ...
    compile ('a library B which don't use 'com.android.support...' OR use SAME version of 'com.android.support'){
         // do nothing 
    }

    ...
    compile ('a library C which use DIFFERENT 'com.android.support...' (ex:27.0.1) { 
        // By default, if use don't do anything here your app will choose the higher com.android.support... for whole project (in this case it is 27.0.1)

        // If you want to use 26.0.1 use
        exclude group: 'com.android.support', module: '...' (ex module: 'appcompat-v7') 
        exclude group: 'com.android.support', module: 'another module'
        ...

        // If you want to use 27.0.1 do 
        Upgrade `compileSdkVersion` and all 'com.android.support' to 27.0.1.
        (It may be a good solution because the best practice is always use latest `compileSdkVersion`.  
        However, use 26 or 27 is base on you for example higher library may have bug)
    }
}

查看/验证dependencies所有图书馆在您的应用程序
打开终端并运行./gradlew app:dependencies

dependencies在您的应用中查看特定库的,请遵循此处的教程:-如何在Gradle中排除特定依赖项的依赖项

希望对你有帮助


5

打开项目的外部库,您会看到一些库仍在使用以前的版本,尽管您没有提到那些库,所以我的建议是仅使用特定库的版本来解决您的问题。


5

我只是将Android支持存储库更新为(修订版:44.0.0);然后从sdk管理器> SDK工具中将Android SDK工具和仿真器升级到最新版本25.3.1,这解决了我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.