Android Studio错误-混合版本可能导致运行时崩溃。

5
在添加 'com.firebaseui:firebase-ui-auth:1.0.0' 依赖后,我遇到了一个错误。当我从 gradle 中删除 'com.firebaseui:firebase-ui-auth:1.0.0' 后,错误就消失了。下面附上代码和图片,请帮忙解决。
apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "com.example.a.chatapp"
    minSdkVersion 22
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

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'
})
compile 'com.android.support:appcompat-v7:25.3.0'



compile 'com.firebaseui:firebase-ui:0.3.1'






compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

enter image description here


就像错误提示所说的那样,尝试使用其他版本(例如24.2.1和23.4.0)。如果这些不起作用,请再次截取最后一张没有弹出错误消息的图像。看起来该消息遮盖了可能是您问题的一些内容。 - Appafly
我在这里更新了最新版本的代码。 https://dev59.com/K1gQ5IYBdhLWcg3wr1_V#48438621 - Muhammad Usman Ghani
5个回答

12

这里存在一个错误!

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

所有的com.android.support库必须使用完全相同的版本说明(混用版本会导致运行时崩溃)。发现版本25.3.1,25.3.0。包括'com.android.support:animated-vector-drawable:25.3.0'和'com.android.support:mediarouter-v7:24.0.0'

根据这些示例,在依赖项中添加这些代码,确保版本相同即可。

只需更新build.gradle文件,加入以下内容:

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

5
问题在于您使用了同一个依赖的不同版本。其中一个版本在您的gradle文件中指定,而其他依赖项由您使用的库使用(在本例中可能是firebase-ui)。
您有更多的选项。首先,您应该尝试更新firebase-ui依赖项。他们通常会更新其支持依赖项,所以我猜他们在当前的主分支中使用与您相同版本的支持库(我猜您使用最新的'com.android.support:appcompat'版本,对吗?)。如果最新版本的firebase-auth未使用当前版本的支持库,则可以将支持库版本降级,使其与他们匹配,或者您可以创建自己的firebase-auth分支并保持其更新。

3
你需要做的是检查哪个库的依赖版本存在冲突,你可以通过运行androidDependancies来跟踪该库,如下所示: AndroidDependacies Report
然后,在您的gradle文件中添加具有更新版本的这些依赖项。

1
这个答案和 https://dev59.com/hOk5XIcBkEYKwwoY8eTT#50010185 帮助我解决了我的问题,谢谢。 - yane

2
请在您的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 '27.1.1'
            }
        }
    }
}

您需要将useVersion从'25.3.1'更改为当前的编译/实现SDK版本。

注意:

如果您仍在使用build.gradle文件中的compile,请用implementationapi替换它,因为compile支持将在2018年底正式结束。

有关更多详细信息,请参考:

当我在gradle(dependency)中用implementation替换compile时出错

Gradle中implementation和compile之间的区别是什么


0

放置

//noinspection GradleCompatible

解决了我的问题


那并没有解决问题,只是隐藏了问题,这意味着IDE不会检查那些问题。 - Farid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接