所有 com.android.support 库必须使用完全相同的版本规范
Posted
技术标签:
【中文标题】所有 com.android.support 库必须使用完全相同的版本规范【英文标题】:All com.android.support libraries must use the exact same version specification 【发布时间】:2017-07-11 11:29:38 【问题描述】:更新到 android studio 2.3 后,我收到此错误消息。 我知道这只是一个提示,因为应用程序运行正常,但这真的很奇怪。
(混合版本可能导致运行时崩溃)。找到版本 25.1.1、24.0.0。示例包括 com.android.support:animated-vector-drawable:25.1.1 和 com.android.support:mediarouter-v7:24.0.0
我的毕业生:
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 details -> if (details.requested.group == 'com.android.support' && !details. requested.name.contains('multidex') ) details.useVersion "26.+" 【参考方案1】:对我来说,该错误是由于我导入的第三方库使用了较旧的 Google 支持库模块造成的。我只是将它们更新到最新版本(例如检查 Github),错误就消失了。我建议检查您包含在 build.gradle
中的所有非 Google 库是否都是最新的。
【讨论】:
【参考方案2】:更新到 Android Studio 2.3 后遇到同样的问题,解决方法是在 build.gradle
中添加以下包:
compile 'com.android.support:support-v13:25.3.1'
注意:更改版本以匹配您项目中使用的其他支持库包
【讨论】:
【参考方案3】:确保所有 Facebook SDK 依赖项使用您项目的相同支持库版本:
dependencies
// Facebook SDK dependencies, excluding Bolts
compile "com.android.support:appcompat-v7:25.4.0"
compile "com.android.support:cardview-v7:25.4.0"
compile "com.android.support:customtabs:25.4.0"
compile "com.android.support:design:25.4.0"
compile "com.facebook.android:facebook-android-sdk:4.23.0"
【讨论】:
【参考方案4】:突出显示错误并按“ALT+ENTER”,您将看到一个选项:
添加库依赖> 编辑意图设置
这将带您进入一个菜单,您将在其中看到与 support-compat 不同的特定问题支持依赖项。在 gradle (com 'XXX') 中创建它的依赖项并设置它的版本以匹配 support-compat 的版本。同步 gradle 就完成了。
【讨论】:
【参考方案5】:implementation 'com.android.support:appcompat-v7:26.1.0'
在此行之后您必须在 gradle 中添加新行
implementation 'com.android.support:design:26.1.0'
【讨论】:
你只需要第二个。它包括自己的第一个【参考方案6】:我在更新到 Android Studio 2.3 后遇到了这个问题
在依赖项中添加这些行解决了我的问题
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:palette-v7:25.2.0'
【讨论】:
【参考方案7】:替换这个
compile 'com.android.support:appcompat-v7:25.2.0'
通过这个
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'
重建和良好的编码
【讨论】:
【参考方案8】:我的项目中有这些依赖项:
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.firebase:firebase-database:17.0.0'
implementation 'com.google.firebase:firebase-storage:17.0.0'
implementation 'com.google.firebase:firebase-messaging:18.0.0'
implementation 'com.firebaseui:firebase-ui-storage:0.6.0'
到目前为止,似乎没有任何问题,但我收到了这条消息:
找到版本 28.0.0、23.4.0。例子包括 com.android.support:animated-vector-drawable:28.0.0 和 com.android.support:palette-v7:23.4.
然后我做了:
$ ./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath >> dep.txt
在文件中,我搜索了palette,发现是firebase storage使用的:
\--- com.firebaseui:firebase-ui-storage:0.6.0
+--- com.android.support:appcompat-v7:23.4.0 -> 28.0.0 (*)
+--- com.android.support:palette-v7:23.4.0
添加后:
implementation 'com.android.support:palette-v7:28.0.0'
似乎已解决,不再出现错误。
//干杯
【讨论】:
【参考方案9】:我设法通过添加来编译(不是很干净)
【讨论】:
【参考方案10】:尽量使构建工具与支持库的版本完全相同
例子
android
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig
applicationId "com.itechnologyeg.*******"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
dependencies
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.android.support:cardview-v7:25.0.0'
compile 'com.android.support:design:25.0.0'
【讨论】:
【参考方案11】:可能导致此问题的另一件事是,如果您有这样的声明:
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:+'
+
表示采用最新版本,可能是比25.3.1
更新的版本。将+
替换为特定版本,例如25.3.1
,如下所示:
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
它会解决问题
【讨论】:
【参考方案12】:如果您在实现以下所有新库后遇到问题。我在这个'com.android.support:appcompat-v7:27.1.0'
兼容版本上遇到了上述同样的问题。
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:design:27.1.0'
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:mediarouter-v7:27.1.0'
implementation 'com.android.support:recyclerview-v7:27.1.0'
implementation 'com.android.support:cardview-v7:27.1.0'
implementation 'com.android.support:support-v13:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'
我只是替换 这个
'com.android.support:appcompat-v7:27.1.0'
到这里
'com.android.support:appcompat-v7:27.0.1'
【讨论】:
只添加实现 'com.android.support:support-v4:27.1.0' 对我有用【参考方案13】:对我来说,我通过添加解决了错误:compile 'com.android.support:design:<version>'
【讨论】:
【参考方案14】:包括以下行:
implementation 'com.android.support:support-v4:27.1.1'
确保您使用的是 android studio 插件 3+
【讨论】:
【参考方案15】:问题可以通过以下方法解决:
-
打开您的
AndroidManifest.xml
文件。
点击底部的Merged Manifest选项
在右侧,它将显示其他清单文件。以下是您包含的不同依赖项的单独清单文件,或者由于某些其他依赖项的影响而被包含在内。
找出错误消息中提到的依赖项。单击它以打开其清单文件。
如果您的错误消息说要更改 meta-data
中的 android:value
属性,那么可以在此处进行更改。
更改该不匹配版本号出现的值和其他位置,并将其更改为您包含在build.gradle
文件中的版本。
现在同步项目,一切顺利
【讨论】:
【参考方案16】:这很简单,只是强制所有 v7 和 v4 库使用您在依赖项之前设置的库版本。
configurations.all
// To resolve the conflict for com.android.databinding
// dependency on support-v4:21.0.3
resolutionStrategy.force 'com.android.support:support-v4:28.0.0'
resolutionStrategy.force 'com.android.support:support-v7:28.0.0'
【讨论】:
【参考方案17】:所有 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
此警告通常在我们使用 Google Play 服务时发生,因为它使用支持库作为依赖项。
我们大多数人都不知道我们可以覆盖 Google Play 服务中使用的支持库。当我们使用以下依赖时:
implementation "com.android.support:animated-vector-drawable:25.1.1"
它隐含地依赖于com.android.support:mediarouter-v7:25.1.1
。但它与 com.android.support:mediarouter-v7:24.0.0
的 Google Play 服务依赖项发生冲突。因此,我们需要通过以下方式显式使用库来覆盖它:
implementation "com.android.support:mediarouter-v7:25.1.1"
然后,您的依赖项块将像这样包含它们:
dependencies
implementation "com.android.support:animated-vector-drawable:25.1.1"
implementation "com.android.support:mediarouter-v7:25.1.1"
...
【讨论】:
【参考方案18】:我必须在 gradle 中添加以下行来消除错误 这取决于您使用的版本与 appcompat 相同
compile 'com.android.support:appcompat-v7:26+'
compile 'com.android.support:mediarouter-v7:26+'
【讨论】:
对版本使用通配符+
是一种不好的做法。始终使用精确的版本以获得可重复的构建。
不推荐。 Android Studio 现在甚至会针对通配符版本发出警告。【参考方案19】:
花了大约 5 个小时后,这个解决方案对我有用..
如果您还没有,请先将此行添加到您的清单标记中:
xmlns:tools="http://schemas.android.com/tools"
例子:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.winanainc"
android:versionCode="3"
android:versionName="1.2"
xmlns:tools="http://schemas.android.com/tools">
然后在您的应用程序中添加此元标记以覆盖您的构建工具版本,在这种情况下,例如我选择了版本 25.3.1
<application>
...
..
<meta-data
tools:replace="android:value"
android:name="android.support.VERSION"
android:value="25.3.1" />
</application>
【讨论】:
【参考方案20】:我的问题解决了
添加以下最新依赖implementation 'com.google.firebase:firebase-auth:16.0.4'
【讨论】:
【参考方案21】:只有一种方法...您必须手动完成... 去 build.gradle 检查将所有依赖项分配给相同的版本.. 它应该可以工作..
【讨论】:
【参考方案22】:只需添加 //noinspection GradleCompatible:
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
或
将以下实现语句添加到依赖项部分。 (如果显示 App Compat 库不匹配错误,那么我们必须重新实现所有不匹配的支持库。我们可以通过将光标放在错误上找到不匹配的库。按快捷键 ctrl + F1 显示完整的详细信息安卓工作室。)
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'
【讨论】:
【参考方案23】:这个错误是因为 glide 库。试试 Picasso 或其他图片库
【讨论】:
不,兄弟,上面的答案我可以确认,因为我有完全相同的错误【参考方案24】:我的解决方案我只是添加
//noinspection GradleCompatible
我构建以测试我的应用程序,一切正常。
【讨论】:
不,不要这样做。这将使 ide 错误消失,但您的应用程序可能会崩溃。他们进行这项检查是有原因的!以上是关于所有 com.android.support 库必须使用完全相同的版本规范的主要内容,如果未能解决你的问题,请参考以下文章
添加 google plya-services 时,所有 com.android.support 库必须使用完全相同的版本规范
text bug-fix:所有com.android.support库必须使用完全相同的版本规范
Cordova 构建错误:“无法解析配置 ':_debugApkCopy' > 的所有依赖项 > 找不到 com.android.support:appcompat-v7:27.0.2。”
无法从com.android.support库导入。 +不同的版本?
Failed to resolve com.android.support:support-annotations 26.0.1