【问题标题】:android studio error- mixing versions can lead to run-time crashesandroid studio 错误-混合版本可能导致运行时崩溃
【发布时间】:2017-08-15 02:28:56
【问题描述】:

将“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'

【问题讨论】:

  • 就像错误所说的那样,尝试其他版本(例如 24.2.1 和 23.4.0)。如果这些不起作用,请在不弹出错误消息的情况下对最后一张图像进行另一张截图。消息似乎掩盖了一些可能是您的问题的事情。
  • 这里我更新最新版本代码stackoverflow.com/a/48438621/2788786

标签: android gradle dependencies


【解决方案1】:

问题是您使用了相同依赖项的两个(或多个)不同版本。第一个在您的 gradle 文件中指定,其他依赖项由您使用的库使用(在这种情况下可能是 firebase-ui)。

您在这里有更多选择。首先,您应该尝试更新 firebase-ui 依赖项。他们通常会更新他们的支持依赖,所以我猜他们在他们当前的主分支中使用与你相同版本的支持库(我猜你使用最新的 'com.android.support:appcompat' 版本,对吧?)。 如果最新版本的 firebase-auth 不使用当前版本的支持库,您可以降级您的支持库版本,使其匹配它们,或者您可以创建自己的 firebase-auth 分支并自行更新。

【讨论】:

    【解决方案2】:

    这里存在错误!

    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'

    看到这个例子 包括'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'
    

    【讨论】:

      【解决方案3】:

      在您的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,因为编译支持将在 2018 年底正式结束。

      更多详情可以参考:

      Error: when I replace compile with implementation in gradle(dependency)

      What's the difference between implementation and compile in gradle

      【讨论】:

        【解决方案4】:

        你需要做的是检查哪个库依赖版本有冲突 您可以使用 Run androidDependancies 跟踪该库,例如:
        然后找到有冲突的依赖项,并在你的 gradle 文件中添加那些更新版本的依赖项。

        【讨论】:

        【解决方案5】:

        //noinspection GradleCompatible

        解决了我的问题

        【讨论】:

        • 这并不能解决问题。它只是隐藏了问题,这意味着 IDE 不会检查这些问题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多