当我今天将我的android工作室从版本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来查找整个项目)
这是我的build.gradle:
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'
}
答案 0 :(得分:63)
详细说明accepted answer,支持库案例的正确依赖解析如下:
不要只是将传递依赖项添加为直接依赖项来强制其版本;这在语义上是错误的(如果你删除了带来传递依赖的依赖,你现在有一个你实际上没有使用的剩余依赖)。
执行以下操作:
在您的根build.gradle
中,您应该已经拥有
ext {
supportlib_version = '27.1.1'
...
}
并在您的网站中使用此属性app/build.gradle
喜欢
dependencies {
implementation "com.android.support:appcompat-v7:$supportlib_version"
implementation "com.android.support:recyclerview-v7:$supportlib_version"
...
}
现在,在您的根build.gradle
中,有
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "$supportlib_version"
}
}
}
}
也就是说,在每个模块和每个配置中,在解析依赖关系时,如果它是支持lib(但不是multidex的(可能有更多例外)),请将版本强制为标准化支持lib版本。
现在在jetpack和jetifier的时代,使用变体(假设你已经迁移到androidx版本)似乎是谨慎的:
你的... app/build.gradle
现在将包含androidx依赖项,但您使用的库仍然可以传递性地引入supportlib依赖项,您仍然需要在同一版本(即28.0.0)上,以便它们可以在构建时正确地得到满足。< / p>
所以保留根build.gradle
部分原样,28.0.0
使用supportlib_version
。
答案 1 :(得分:56)
我查看了整个项目,但找不到任何版本24.0.0的使用
它将作为您的其他依赖项之间的传递依赖。
首先,修复build.gradle
文件中的其他问题,因为它们也可以解决此问题:
不要将+
用于库版本。使用特定版本。
请勿使用play-services
。使用所需的Play Services SDK特定部分的特定依赖项。 play-services
引入了所有的Play服务,使您的应用程序大得多,并且大大减慢了构建时间。
将com.mcxiaoke.volley
替换为官方Volley工件(com.android.volley:volley:1.0.0
)
如果这些都没有解决问题,您可以运行Gradle依赖关系报告以查看完整的依赖关系树。从那里,您将看到您的哪个库要求提供不同版本的Android支持库。无论要求是什么,您都可以使用25.2.0
版本直接询问,或使用Gradle的其他冲突解决方法来安排获得相同的版本。
答案 2 :(得分:23)
注意说明错误的小信息窗口,它说明你需要更改和添加的例子。
在您的情况下,只需编译小信息窗口所示的所有示例:
示例包括com.android.support:animated-vector-drawable:25.2.0和 com.android.support:mediarouter-v7:24.0.0 强>
您的
com.android.support:animated-vector-drawable:25.2.0
是版本25.2.0,您的
com.android.support:mediarouter-v7:24.0.0
是版本24.0.0,因此您必须添加具有相同版本的mediarouter:
com.android.support:mediarouter-v7:25.2.0
为小信息窗口所说的每个例子都这样做;在您的情况下所有没有版本25.2.0的库。
修复指定的库后,您必须同步草图,以查看您需要更改的下一个库和包。
答案 3 :(得分:12)
同样的问题发生在我身上。我刚才所做的就是添加了这两行
compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
问题解决了。我还删除了以前版本的gradle文件夹。
答案 4 :(得分:8)
你可以添加
compile 'com.android.support:customtabs:25.2.0'
右键单击 gradle 依赖项,您可以添加冲突的依赖项。 对我来说是
compile 'com.android.support:cardview-v7:25.2.0'
compile 'com.android.support:animated-vector-drawable:25.2.0'
答案 5 :(得分:7)
将它添加到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'
}
}
}
}
&#13;
替换&#39; 25.3.1&#39;对于您要使用的Android支持库版本,该版本必须高于您的compileSdk版本。
答案 6 :(得分:2)
Here指出添加此行将删除错误。
compile 'com.android.support:customtabs:25.2.0'
答案 7 :(得分:2)
看起来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'
我认为这可以解决问题。
答案 8 :(得分:2)
我在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 (*)
base-rvadapter库不包含25.3.1:
com.zhy:base-rvadapter:3.0.3
| \--- com.android.support:recyclerview-v7:23.4.0
最后,我添加一行:
compile 'com.android.support:design:25.3.1'
设计包括appcompat-v7和base-rvadapter链接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 (*)
答案 9 :(得分:1)
尝试使用您正在使用的特定软件包替换compile 'com.google.android.gms:play-services:+'
(请参阅此答案:https://stackoverflow.com/a/42374426/3495069)
答案 10 :(得分: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'
答案 11 :(得分:-1)
在您的案例中使相同版本或最新版本的所有依赖项替换25.2.0的支持库版本。
答案 12 :(得分:-2)
使用特定版本而不是+
。例如,'com.google.android.gms:play-services:10.2.0'
使用您正在使用的特定SDK,而不是添加整个Play-SDKs包。例如:
'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'
这有助于我解决问题。