当我今天将我的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'
}
Run Code Online (Sandbox Code Playgroud)
Jul*_*ule 63
要详细说明已接受的答案,支持库案例的正确依赖性解析如下:
不要只是将传递依赖项添加为直接依赖项来强制它们的版本; 这在语义上是错误的(如果你删除了带来传递依赖的依赖,你现在有一个你实际上没有使用的剩余依赖).
请执行下列操作:
在你的根目录中build.gradle,你应该已经拥有了
ext {
supportlib_version = '27.1.1'
...
}
Run Code Online (Sandbox Code Playgroud)
并在你的app/build.gradle喜欢中使用这个属性
dependencies {
implementation "com.android.support:appcompat-v7:$supportlib_version"
implementation "com.android.support:recyclerview-v7:$supportlib_version"
...
}
Run Code Online (Sandbox Code Playgroud)
现在,在你的根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"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,在每个模块和每个配置中,在解析依赖关系时,如果它是支持lib(但不是多索引用(可能有更多例外)),请将版本强制为标准化支持lib版本.
Com*_*are 56
我查看了整个项目,我找不到任何版本24.0.0的用法
它是来自您的其他依赖项之间的传递依赖.
首先,修复build.gradle文件中的其他问题,因为它们也可以解决此问题:
不要+用于库版本.使用特定版本.
不要用play-services.使用所需的Play Services SDK特定部分的特定依赖项.play-services带来了所有的播放服务,使您的应用程序比它需要和放慢您的构建时间很多大得多.
替换com.mcxiaoke.volley官方Volley神器(com.android.volley:volley:1.0.0)
如果这些都没有解决问题,您可以运行Gradle依赖关系报告以查看完整的依赖关系树.从那里,您将看到您的哪个库要求提供不同版本的Android支持库.无论它要求什么,您可以直接使用该25.2.0版本请求它,或使用Gradle的其他冲突解决方法来安排获得相同的版本.
Bra*_*dio 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
Run Code Online (Sandbox Code Playgroud)
并为小信息窗口所说的每个例子做到这一点; 在您的情况下,所有库没有版本25.2.0.
修复指定的库后,您必须同步gradle以查看您必须更改的下一个库和包.
小智 12
同样的问题发生在我身上.我刚刚做了什么,添加了这两行
compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
Run Code Online (Sandbox Code Playgroud)
问题解决了.我还删除了以前版本的gradle文件夹.
你可以加
compile 'com.android.support:customtabs:25.2.0'
Run Code Online (Sandbox Code Playgroud)
通过右键单击gradle依赖项,您可以添加冲突的依赖项.对我来说是
compile 'com.android.support:cardview-v7:25.2.0'
compile 'com.android.support:animated-vector-drawable:25.2.0'
Run Code Online (Sandbox Code Playgroud)
小智 8
将它添加到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'
}
}
}
}Run Code Online (Sandbox Code Playgroud)
将'25 .3.1'替换为您要使用的android支持库版本,版本必须高于您的compileSdk版本.
| 归档时间: |
|
| 查看次数: |
51049 次 |
| 最近记录: |