所有com.android.support库必须使用完全相同的版本
当我今天将android studio从2.2.3版升级到2.3版时,我在依赖项的第一个编译行build.gradle中突然出现了这个错误 (哪一个家属在第一位并不重要,但总是会给我这个错误): 所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。已找到版本25.2.0、24.0.0。示例包括com.android.support:animated vector drawable:25.2.0和com.android.support:mediarouter-v7:24.0.0 我已经查看了整个项目,但找不到版本24.0.0的任何用法(我使用ctrl+shift+F在整个项目中搜索) 这是我的身材。格雷德尔:所有com.android.support库必须使用完全相同的版本,android,gradle,Android,Gradle,当我今天将android studio从2.2.3版升级到2.3版时,我在依赖项的第一个编译行build.gradle中突然出现了这个错误 (哪一个家属在第一位并不重要,但总是会给我这个错误): 所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。已找到版本25.2.0、24.0.0。示例包括com.android.support:animated vector drawable:25.2.0和com.android.support:mediar
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionName "1.0"
versionCode 1
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
minifyEnabled true
shrinkResources true
}
}
dexOptions {
javaMaxHeapSize "4g"
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.google.android.gms:play-services:+'
compile 'com.squareup:otto:1.3.8'
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
compile 'com.android.support:multidex:1.0.1'
}
我查看了整个项目,没有发现24.0.0版本的任何用法
它作为一个可传递的依赖项来自于您的其他依赖项之一
不过,首先要解决build.gradle
文件中的其他问题,因为它们也可能会解决此问题:
- 不要对库版本使用
。使用特定的版本+
- 不要使用
。对所需的Play Services SDK的特定部分使用特定依赖项播放服务
引入了所有的play服务,使您的应用程序比需要的大得多,并大大降低了构建时间play services
- 将
替换为官方的截击工件(com.mcxiaoke.volley
)com.android.volley:volley:1.0.0
如果这些都不能解决这个问题,那么您可以运行Gradle依赖关系报告来查看完整的依赖关系树是什么。从这里,您将看到您的哪个库要求使用不同版本的Android支持库。无论它要求什么,你都可以直接用
25.2.0
版本来要求它,或者使用Gradle的其他冲突解决方法来安排获得相同的版本。试着用你正在使用的特定软件包替换compile'com.google.android.gms:play services:+'
(请参阅此答案:)有人指出,添加此行将删除错误
compile 'com.android.support:customtabs:25.2.0'
同样的问题也发生在我身上。我刚才所做的增加了这两行
compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
问题解决了。我还删除了我以前版本的gradle文件夹 看起来Android Studio 2.3需要显式声明外部依赖项。依赖项是customtabs和palette-v7 您需要在build.gradle中显式添加以下两个外部依赖项/包
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:palette-v7:25.2.0'
我认为这将解决这个问题。使用特定版本,而不是
+
。例如,“com.google.android.gms:play services:10.2.0”
并使用您正在使用的特定SDK,而不是添加整个Play SDK包。例如:
'com.google.android.gms:play-services-gcm:10.2.0'
'com.google.android.gms:play-services-maps:10.2.0'
'com.google.android.gms:play-services-location:10.2.0'
这帮助我解决了这个问题。对于所有情况,而不仅仅是这些版本或库:
请注意这个小信息窗口,它显示了一些关于错误的信息,它显示了您必须更改和添加的示例
你看不到它的用法,因为它的用法可能是另一个库的内部用法(比如GooglePlayServices或squareup)。
只需编译小信息窗口显示的所有示例,在您的案例中:
示例包括com.android.support:animated vector drawable:25.2.0和
支持:mediarouter-v7:24.0.0
你的
支持:动画矢量绘图:25.2.0
是25.2.0版,您的
支持:mediarouter-v7:24.0.0
是24.0.0版,因此您必须添加具有相同版本的mediarouter:
com.android.support:mediarouter-v7:25.2.0
对于小信息窗口所说的每一个例子都要这样做;在您的情况下,所有没有版本25.2.0的库。
在修复指定的库后,您必须同步梯度,以查看下一个需要更改的库和包。您可以添加
compile 'com.android.support:customtabs:25.2.0'
通过右键单击gradle dependency,可以添加冲突的依赖项。
对我来说是
compile 'com.android.support:cardview-v7:25.2.0'
compile 'com.android.support:animated-vector-drawable:25.2.0'
要详细说明,支持库案例的正确依赖项解析如下:
不要只是添加可传递依赖项作为直接依赖项来强制其版本;这在语义上是错误的(如果您删除了引入可传递依赖项的依赖项,那么您现在就有了一个未实际使用的剩余依赖项)
请执行以下操作:
在rootbuild.gradle
中,您应该已经有了
ext {
supportlib_version = '27.1.1'
...
}
并在您的应用程序中使用此属性,例如app/build.gradle
like
dependencies {
implementation "com.android.support:appcompat-v7:$supportlib_version"
implementation "com.android.support:recyclerview-v7:$supportlib_version"
...
}
现在,在rootbuild.gradle
中
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "$supportlib_version"
}
}
}
}
也就是说,在每个模块和每个配置中,在解析依赖项时,如果它是一个支持库(但不是多索引库(可能有更多例外)),则强制将版本转换为标准化的支持库版本
现在,在jetpack和Jettifier的时代,采用一种变体(假设您已经迁移到androidx版本)似乎是明智的: 例如,
app/build.gradle
现在将包含androidx依赖项,但是您使用的库可能仍然会临时拉入supportlib依赖项,您仍然希望在同一版本(即28.0.0)上使用这些依赖项,以便在构建时对它们进行正确的jetified
因此,保持根
build.gradle
部分不变,对supportlib\u版本使用28.0.0
使相同版本或最新版本的所有依赖项都替换为25.2.0版本的支持库版本 我在Android studio 2.3中也遇到了同样的问题
之前:
然后,我尝试:
./gradlew -q dependencies app --configuration compile
+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
| \--- com.android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
| \--- com.android.support:recyclerview-v7:23.4.0
| +--- com.android.support:support-annotations:23.4.0 -> 25.3.1
| \--- com.android.support:support-v4:23.4.0 -> 25.3.1
| +--- com.android.support:support-compat:25.3.1
| | \--- com.android.support:support-annotations:25.3.1
| +--- com.android.support:support-media-compat:25.3.1
| | +--- com.android.support:support-annotations:25.3.1
| | \--- com.android.support:support-compat:25.3.1 (*)
| +--- com.android.support:support-core-utils:25.3.1
| | +--- com.android.support:support-annotations:25.3.1
| | \--- com.android.support:support-compat:25.3.1 (*)
| +--- com.android.support:support-core-ui:25.3.1
| | +--- com.android.support:support-annotations:25.3.1
| | \--- com.android.support:support-compat:25.3.1 (*)
| \--- com.android.support:support-fragment:25.3.1
| +--- com.android.support:support-compat:25.3.1 (*)
| +--- com.android.support:support-media-compat:25.3.1 (*)
| +--- com.android.support:support-core-ui:25.3.1 (*)
| \--- com.android.support:support-core-utils:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
| \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
| \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
| +--- com.jakewharton:butterknife-annotations:8.4.0
| | \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
| \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.android.support:appcompat-v7:25.3.1
| +--- com.android.support:support-annotations:25.3.1
| +--- com.android.support:support-v4:25.3.1 (*)
| +--- com.android.support:support-vector-drawable:25.3.1
| | +--- com.android.support:support-annotations:25.3.1
| | \--- com.android.support:support-compat:25.3.1 (*)
| \--- com.android.support:animated-vector-drawable:25.3.1
| \--- com.android.support:support-vector-drawable:25.3.1 (*)
基本rvadapter库不包括
com.zhy:base-rvadapter:3.0.3
| \--- com.android.support:recyclerview-v7:23.4.0
compile 'com.android.support:design:25.3.1'
+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
| \--- com.android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
| \--- com.android.support:recyclerview-v7:23.4.0 -> 25.3.1
| +--- com.android.support:support-annotations:25.3.1
| +--- com.android.support:support-compat:25.3.1
| | \--- com.android.support:support-annotations:25.3.1
| \--- com.android.support:support-core-ui:25.3.1
| +--- com.android.support:support-annotations:25.3.1
| \--- com.android.support:support-compat:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
| \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
| \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
| +--- com.jakewharton:butterknife-annotations:8.4.0
| | \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
| \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.android.support:appcompat-v7:25.3.1
| +--- com.android.support:support-annotations:25.3.1
| +--- com.android.support:support-v4:25.3.1
| | +--- com.android.support:support-compat:25.3.1 (*)
| | +--- com.android.support:support-media-compat:25.3.1
| | | +--- com.android.support:support-annotations:25.3.1
| | | \--- com.android.support:support-compat:25.3.1 (*)
| | +--- com.android.support:support-core-utils:25.3.1
| | | +--- com.android.support:support-annotations:25.3.1
| | | \--- com.android.support:support-compat:25.3.1 (*)
| | +--- com.android.support:support-core-ui:25.3.1 (*)
| | \--- com.android.support:support-fragment:25.3.1
| | +--- com.android.support:support-compat:25.3.1 (*)
| | +--- com.android.support:support-media-compat:25.3.1 (*)
| | +--- com.android.support:support-core-ui:25.3.1 (*)
| | \--- com.android.support:support-core-utils:25.3.1 (*)
| +--- com.android.support:support-vector-drawable:25.3.1
| | +--- com.android.support:support-annotations:25.3.1
| | \--- com.android.support:support-compat:25.3.1 (*)
| \--- com.android.support:animated-vector-drawable:25.3.1
| \--- com.android.support:support-vector-drawable:25.3.1 (*)
\--- com.android.support:design:25.3.1
+--- com.android.support:support-v4:25.3.1 (*)
+--- com.android.support:appcompat-v7:25.3.1 (*)
+--- com.android.support:recyclerview-v7:25.3.1 (*)
\--- com.android.support:transition:25.3.1
+--- com.android.support:support-annotations:25.3.1
\--- com.android.support:support-v4:25.3.1 (*)
compile 'com.google.android.gms:play-services:9.6.1'
compile 'com.google.android.gms:play-services-fitness:10.2.4'
compile 'com.google.android.gms:play-services-wearable:10.2.4'