【问题标题】:Error:Program type already present: android.arch.lifecycle.LiveData错误:程序类型已存在:android.arch.lifecycle.LiveData
【发布时间】:2018-03-01 18:50:14
【问题描述】:

当我在 Android Studio 中按下运行按钮时,我的应用程序编译但显示此错误(已编辑):

Error:Program type already present: android.arch.lifecycle.LiveData

(Full log)

我尝试删除.gradle 文件夹,然后转到Build > Clean ProjectBuild > Rebuild Project。但是,它不起作用。我也尝试过删除源代码,然后再次从git 克隆并将文件夹导入Android Studio。但是,它仍然会产生该错误。

这是我应用的app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig {
        applicationId "com.edricchan.studybuddy"
        minSdkVersion 24
        targetSdkVersion 27
        versionCode 8
        versionName "1.0.0-rc.503"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        resConfigs "en"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    implementation 'com.android.support:support-v4:27.1.0'
    implementation 'com.android.support:support-annotations:27.1.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:cardview-v7:27.1.0'
    testImplementation 'junit:junit:4.12'
    // Firebase stuff
    implementation 'com.google.firebase:firebase-storage:11.8.0'
    implementation 'com.google.firebase:firebase-firestore:11.8.0'
    implementation 'com.google.firebase:firebase-auth:11.8.0'
    implementation 'com.google.firebase:firebase-messaging:11.8.0'
    implementation 'com.google.android.gms:play-services-auth:11.8.0'
    implementation 'com.firebaseui:firebase-ui-auth:3.1.0'
    implementation 'com.firebaseui:firebase-ui-firestore:3.1.0'
    implementation 'com.firebaseui:firebase-ui-storage:3.1.0'
    // Provide a way to update the app
    implementation 'com.github.javiersantos:AppUpdater:2.6.4'
    // Chrome Custom Tabs
    implementation 'com.android.support:customtabs:27.1.0'
    // The app's intro screen
    implementation 'com.heinrichreimersoftware:material-intro:1.6.2'
    // Use for new Material Text field boxes recently introduced
    implementation 'com.github.HITGIF:TextFieldBoxes:1.3.7'
    // Report an issue to Github without having to open a new tab and so on...
    implementation 'com.heinrichreimersoftware:android-issue-reporter:1.3.1'
}
apply plugin: 'com.google.gms.google-services'

【问题讨论】:

标签: android android-studio android-gradle-plugin android-livedata


【解决方案1】:

显然,这是预期的行为:

com.firebaseui:firebase-ui-firestore:3.1.0 依赖于 android.arch.lifecycle:extensions:1.0.0-beta1。切换到版本 3.2.2 通过使用支持库 27.1.0 所基于的生命周期 1.1 库来解决此问题。 - Issue Tracker

对我来说,删除 firebase-ui 依赖项解决了这个问题,因为我什至一开始都没有使用该库。

【讨论】:

  • 至此,升级 Android Studio 的漫长道路已经结束……谢谢!
  • 我什至不使用 firebase-ui 但仍然出现此错误
  • @EgeKuzubasioglu 你能发布一个新问题吗?
  • @Edric 原来是一个外部库合并 dex 问题导致了这个问题,我从我的项目中删除了那个库
  • 在我的情况下,删除与燃料相关的依赖项 (com.github.kittinunf.fuel)
【解决方案2】:

我今天提高支持库版本时遇到了同样的问题。

尝试将所有“27.1.0”替换为“27.0.2”


后来我也设法通过升级其他库来消除错误。 这是我目前的工作状态: 根等级:

buildscript {
    ext.kotlin_version = '1.2.21'
    ext.support_version = '27.1.0'
    ext.anko_version = '0.10.4'
    ext.android_plugin_version = '3.0.1'
    ext.google_services_version = '11.8.0'

    repositories {
        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"

        classpath 'com.android.tools.build:gradle:3.1.0-beta4'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.1.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

///////////////// 应用 gradle 库:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
        transitive = true
    }

    // kotlin:
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation "org.jetbrains.anko:anko-common:$anko_version"
    implementation "org.jetbrains.anko:anko-commons:$anko_version"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.3'

    // support libraries:
    implementation "com.android.support:recyclerview-v7:$support_version"
    implementation "com.android.support:support-v4:$support_version"
    implementation "com.android.support:design:$support_version"
    implementation "com.android.support:appcompat-v7:$support_version"
    implementation "com.android.support:cardview-v7:$support_version"
    implementation "com.android.support:support-vector-drawable:$support_version"

    // misc:
    implementation 'com.github.d-max:spots-dialog:0.7@aar'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
    implementation 'com.backendless:backendless:4.4.0'
    implementation 'io.nlopez.smartlocation:library:3.3.3'

    // Google services:
    implementation "com.google.firebase:firebase-core:$google_services_version"
    implementation "com.google.firebase:firebase-auth:$google_services_version"
    implementation 'com.firebaseui:firebase-ui-auth:3.2.2'

    implementation "com.google.android.gms:play-services-location:$google_services_version"
    implementation "com.google.android.gms:play-services-auth:$google_services_version"

    implementation('com.google.api-client:google-api-client:1.23.0') {
        exclude group: 'com.google.code.findbugs', module: 'jsr305'
    }
}

//////////////

我还将 graddle-wrapper.properties 升级为:

#Wed Dec 20 15:08:34 CET 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

【讨论】:

  • 后来,我确实设法通过升级其他库来消除错误。
  • 谢谢!降级解决了这个问题。降级后怎么解决的?
  • 你升级了哪些库?我说不出来
  • 我刚刚向 Google 的问题跟踪器报告了这个问题:issuetracker.google.com/issues/74130804
【解决方案3】:

这篇文章是非常相似的错误的顶部搜索结果:“程序类型已经存在:android.arch.lifecycle.ViewModelProvider$Factory

我的项目使用 Room 和 LiveData,但不使用 firebase。以下更改消除了错误:

来自:

implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
implementation 'android.arch.lifecycle:extensions:1.0.0'
annotationProcessor 'android.arch.lifecycle:compiler:1.0.0'

到:

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
implementation 'android.arch.lifecycle:extensions:1.1.1'
annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'

---更新的答案---

我之前的回答旨在解决这个错误。但是,我认为值得使用最佳实践再次展示它:

应用级 build.gradle 文件:

// Room components
implementation "android.arch.persistence.room:runtime:$rootProject.roomVersion"
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
androidTestImplementation "android.arch.persistence.room:testing:$rootProject.roomVersion"

// Lifecycle components
implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
annotationProcessor "android.arch.lifecycle:compiler:$rootProject.archLifecycleVersion"

项目级 build.gradle 文件:

ext {
   roomVersion = '1.1.1'
   archLifecycleVersion = '1.1.1'
}

参考:
https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#2

【讨论】:

  • 谢谢!唯一有效的答案。虽然我没有使用房间,但升级生命周期依赖项有所帮助,现在我的项目构建了!
【解决方案4】:

Firebase-UI 3.1.0 与 Firebase / Google Services 11.8.0 不兼容

您需要根据https://github.com/firebase/FirebaseUI-Android#compatibility-with-firebase--google-play-services-libraries升级或降级

  • Firebase-UI 3.1.0 与 Firebase / Google 服务 11.4.2
  • Firebase / Google 服务 11.8.0 和 Firebase-UI 3.1.3

希望有帮助;)

【讨论】:

  • 正如我在回答中所说,您可以将firebase-ui 升级到3.2.2 或完全删除它。
【解决方案5】:

我在原始问题中也发布了错误,即:

Error:Program type already present: android.arch.lifecycle.LiveData

不清楚是哪些库导致了问题。在上面@linmt 的提示下,我意识到它可能与 Firebase 相关。

就我而言,我正在使用 Firebase,并且还在使用 firebase-ui 库 3.2.2:

implementation 'com.firebaseui:firebase-ui-database:3.2.2'

我已将所有其他 Firebase 库升级到 15.0.0,但意识到我的 firebase-ui 库不兼容并在此确认:

https://github.com/firebase/FirebaseUI-Android#compatibility-with-firebase--google-play-services-libraries

请务必将您的 firebase-ui 版本与固定配对的确切 Firebase 版本相匹配。

将我的 firebase-ui 版本升级到 3.3.1 解决了这个错误:

implementation 'com.firebaseui:firebase-ui-database:3.3.1'

以下是我现在使用的版本供参考,我的应用正在运行且没有错误:

implementation 'com.google.android.gms:play-services-wearable:15.0.0'
implementation 'com.google.android.gms:play-services-auth:15.0.0'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.google.firebase:firebase-database:15.0.0'
implementation 'com.google.firebase:firebase-core:15.0.0'
implementation 'com.google.firebase:firebase-auth:15.0.0'
implementation 'com.google.firebase:firebase-messaging:15.0.0'
implementation 'com.firebaseui:firebase-ui-database:3.3.1'

【讨论】:

  • 正如我在回答中所说,您可以将firebase-ui 升级到3.2.2 或完全删除它。
【解决方案6】:

请在您的应用 build.gradel 文件中添加以下依赖项

implementation "android.arch.core:runtime:1.1.1"
implementation "android.arch.core:common:1.1.1"

【讨论】:

  • 描述如何解决他的问题。所以会更容易理解。
  • @rishad2m8 我已经解决了我的问题,尽管其他人可能会在这里找到其他有用的解决方案。
【解决方案7】:

@Edric:因为我无法重播线程中的图像,所以我在这里回答你的问题。

对我有用的改变:

PS:我还将 gradle-wrapper.properties 中的 distributionUrl 升级为 http://services.gradle.org/distributions/gradle-4.6-all.zip

【讨论】:

  • 我已经看到您对gradle-wrapper.properties 所做的更改,只是build.gradle。哦,顺便说一句,我报告的问题已分配给 Google 员工。
  • 无论如何.. 现在您已经完成了对我有用的所有确切更改...在一个地方
【解决方案8】:

就像 Edric 提到的,这是因为一些库仍然使用旧版本的 android.arch.lifecycle:extensions 库,即android.arch.lifecycle:extensions:1.0.0

解决此问题的一种方法是强制应用使用该库的相同版本(如果可以,请使用最新版本)。

有两种方法可以做到这一点:

  1. 在依赖项部分下明确定义了我们要在 Gradle 中使用的库版本。

    implementation 'android.arch.lifecycle:extensions:1.1.1

  1. 强制解析库,也在dependencies 部分下。

    android {
        configurations.all {
            resolutionStrategy.force 'android.arch.lifecycle:extensions:1.1.1'
        }
    }
    

【讨论】:

    【解决方案9】:

    就我而言,将 targetSdkVersioncompileSdkVersion 提高到 28,并使用所有支持库的第 28 版解决了这个问题。


    我在升级 Glide 时遇到了这个问题。我收到关于 duplicate CoordinatorLayout 的错误。我 solved 使用 com.android.support:design:27.1.0,但后来我收到了另一个关于 LiveData$LifecycleBoundObserver 的错误。

    几个小时后,我放弃并将targetSdkVersioncompileSdkVersion升级到API 28,以及使用

    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    

    因为 YOLO。运气不好,它奏效了。

    【讨论】:

      【解决方案10】:

      只需要升级。对我来说,我必须在 App build.gradle 文件中升级以下内容:

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-auth:16.2.0'
      implementation 'com.firebaseui:firebase-ui-database:3.2.2'
      

      然后您将同步您的文件。运行时会出现新的安装失败弹出框。只需取消这些并执行以下操作:

      1) Build -> Clean Project
      2) Build -> Build Bundle(s) / APK(s) -> Build APK(s)
      3) Run your project! Should work!
      

      如果您想了解我如何解决它的任何其他详细信息,请关注link,但这应该可以解决问题!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-25
        • 2019-09-04
        • 2020-10-13
        • 2019-05-22
        • 2020-03-26
        • 2019-05-03
        相关资源
        最近更新 更多