【问题标题】:Build fails with 'Program type already present: android.arch.core.util.Function'构建失败并显示“程序类型已存在:android.arch.core.util.Function”
【发布时间】:2018-05-25 08:21:45
【问题描述】:

更新我的 Firebase 和 Play 服务依赖项以及 Play 服务插件后,我的项目无法构建。我已经尝试了多次 Clean-Rebuilds,并且我的应用程序启用了 MultiDex。恢复到我原来的依赖版本也不是一个选项,因为我为云函数添加了一个依赖,它的最新版本与我的其他 firebase 依赖不兼容。我可以在 Android 问题下看到以下内容

Program type already present: android.arch.core.util.Function
Message{kind=ERROR, text=Program type already present:  android.arch.core.util.Function, sources=[Unknown source file], tool name=Optional.of(D8)}

我还在“运行任务”下看到一条错误消息

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 

我的 gradle 依赖项

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
    implementation 'com.android.support:multidex:1.0.3'

    //Android Support
    implementation 'com.android.support:support-v13:27.1.1'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation "com.android.support:cardview-v7:27.1.1"
    implementation "com.android.support:customtabs:27.1.1"
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation "com.android.support:support-v4:27.1.1"

    //Firebase
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.google.firebase:firebase-analytics:16.0.0'
    implementation 'com.google.firebase:firebase-appindexing:15.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.1' //Maintain compatibility with com.firebaseui:firebase-ui-firestore
    implementation 'com.google.firebase:firebase-firestore:17.0.1' //Maintain compatibility with com.firebaseui:firebase-ui-firestore
    implementation 'com.google.firebase:firebase-functions:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'
    //implementation 'com.google.firebase:firebase-storage:16.0.1' //Maintain compatibility with com.firebaseui:firebase-ui-firestore
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
        transitive = true
    }
    //implementation 'com.google.firebase:firebase-invites:16.0.0'
    implementation 'com.google.firebase:firebase-config:16.0.0'

    //Google Play
    implementation 'com.google.android.gms:play-services-ads:15.0.1'
    implementation 'com.google.android.gms:play-services-places:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'

    //Stream Support
    implementation 'net.sourceforge.streamsupport:android-retrostreams:1.6.1'
    implementation 'net.sourceforge.streamsupport:android-retroflow:1.6.1'
    implementation 'net.sourceforge.streamsupport:android-retrofuture:1.6.1'

    //Location
    implementation 'io.nlopez.smartlocation:library:3.3.3'

    //Firebase UI
    implementation 'com.firebaseui:firebase-ui-firestore:4.0.0'

    //Facebook
    implementation 'com.facebook.android:facebook-login:4.31.0'

    //Search
    implementation 'com.algolia:algoliasearch-android:3.14.1'

    //Butterknife
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    //UI Elements for layout staggering
    implementation 'com.google.android:flexbox:0.3.2'

    //Image Handling Library
    implementation 'com.facebook.fresco:fresco:1.8.0'

    // UI Element for Country-code
    implementation 'com.hbb20:ccp:2.1.2'

    // UI Element for OTP
    implementation 'com.github.GoodieBag:Pinview:v1.3'

    //Loading indicator using shimmer
    implementation 'io.supercharge:shimmerlayout:2.0.0'

    //UI Element for Tooltip
    implementation 'it.sephiroth.android.library.targettooltip:target-tooltip-library:1.3.15'

    //Date/Time Pickers for Hangout Creation
    implementation 'com.wdullaer:materialdatetimepicker:3.5.1'

    //UI Element from Drop-down boxes
    implementation('com.weiwangcn.betterspinner:library-material:1.1.0') {
        exclude group: 'com.android.support', module: 'appcompat-v7'
        exclude group: 'com.android.support', module: 'appcompat-v4'
    }

    //JSON Handling
    implementation 'com.google.code.gson:gson:2.8.2'

    //Permissions using RxPermissions
    implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

    //RxBindings for Platform
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.1.1'

    //Logging
    implementation 'com.jakewharton.timber:timber:4.6.0'

    //Testing
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

【问题讨论】:

  • google-services 的版本?
  • 我的项目使用最新版本的firebase core, database, messaging and auth 依赖项和最新版本的classpath 'com.google.gms:google-services:4.0.1' 添加implementation 'com.firebaseui:firebase-ui-database:4.0.0' 时出现问题,它显示此错误Program type already present: android.arch.core.util.Function Message{kind=ERROR, text=Program type already present: android.arch.core.util.Function, sources=[Unknown source file], tool name=Optional.of(D8)}
  • 对我来说,降级导致问题的依赖解决了问题'com.firebaseui:firebase-ui-database:3.3.1'
  • @ParaskevasNtsounos 'com.google.gms:google-services:4.0.1'
  • 根据@OmarAbdelhafiz 的评论将 Firebase-UI 降级到 3.3.1 版并使用 firebase-firestore:15.0.0 似乎至少可以使构建成功。但这确实是不可持续的,因为在某些时候我希望能够使用更新的依赖项。

标签: android firebase google-play-services


【解决方案1】:

我找到了一些好人在 GitHub 上发布的解决方案。除了降级您的 firebaseUI 数据库之外,您还可以添加arch common 和 runtime 依赖项,它们是:

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

只需在您的应用程序中添加这些:模块依赖项部分,您就知道构建它了。

【讨论】:

  • 您在依赖项中使用的 firebaseUI 版本
  • 在 google 的一个 firebase 示例中找到了它。但是,您只需要运行时而不需要公共。
  • 是的。但为了安全起见,我添加了 common。
  • 这是对我有用的解决方案,比降级库更有意义
  • 我很高兴能帮到你。
【解决方案2】:

我的项目使用最新版本的firebase core, database, messaging and auth 依赖项和最新的classpath 'com.google.gms:google-services:4.0.1'

App/build.gradle

dependencies {

    // Tab Layout and ViewPager
    implementation 'com.android.support:design:27.1.1'

    // firebase dependencies
    // implementation 'com.firebaseui:firebase-ui-database:4.0.0' Source of error
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'
    implementation 'com.google.firebase:firebase-auth:16.0.1'
}

build.gradle

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        

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

添加implementation 'com.firebaseui:firebase-ui-database:4.0.0'时问题演变

它显示了这个错误:

程序类型已经存在:android.arch.core.util.Function

Message{kind=ERROR, text=Program type already present: android.arch.core.util.Function, sources=[Unknown source file], tool name=Optional.of(D8)}

解决方案是将implementation 'com.firebaseui:firebase-ui-database:4.0.0' 降级为implementation 'com.firebaseui:firebase-ui-database:3.3.1',如下所示:

App/build.gradle

dependencies {

    // Tab Layout and ViewPager
    implementation 'com.android.support:design:27.1.1'

    // firebase dependencies
    implementation 'com.firebaseui:firebase-ui-database:3.1.1' // No trouble in compiling
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'
    implementation 'com.google.firebase:firebase-auth:16.0.1'
}

我希望 Google 在未来的更新中解决这个问题。

希望有所帮助!

【讨论】:

  • 另外,兼容的firestore依赖是'com.google.firebase:firebase-firestore:15.0.0'
【解决方案3】:

尝试将 gradle 文件替换为:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:3.2.1'
    }
}

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

模块:应用程序与:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 16
        targetSdkVersion 27
        multiDexEnabled true
    }

    buildTypes {

        debug{
            debuggable true
            minifyEnabled false
        }
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }


    repositories {
        jcenter()
        google()
        maven { url 'https://maven.google.com' }
    }



}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'

    implementation 'com.android.support:multidex:1.0.3'
    //Android Support
    implementation 'com.android.support:support-v13:27.1.1'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation "com.android.support:cardview-v7:27.1.1"
    implementation "com.android.support:customtabs:27.1.1"
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation "com.android.support:support-v4:27.1.1"

    //Firebase
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.google.firebase:firebase-analytics:16.0.0'
    implementation 'com.google.firebase:firebase-appindexing:15.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.1' //Maintain compatibility with com.firebaseui:firebase-ui-firestore
    implementation 'com.google.firebase:firebase-firestore:17.0.1' //Maintain compatibility with com.firebaseui:firebase-ui-firestore
    implementation 'com.google.firebase:firebase-functions:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'
    //implementation 'com.google.firebase:firebase-storage:16.0.1' //Maintain compatibility with com.firebaseui:firebase-ui-firestore
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
        transitive = true
    }
    //implementation 'com.google.firebase:firebase-invites:16.0.0'
    implementation 'com.google.firebase:firebase-config:16.0.0'

    //Google Play
    implementation 'com.google.android.gms:play-services-ads:15.0.1'
    implementation 'com.google.android.gms:play-services-places:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'

    //Stream Support
    implementation 'net.sourceforge.streamsupport:streamsupport:1.6.0'
    implementation 'net.sourceforge.streamsupport:streamsupport-cfuture:1.6.0'
    implementation 'net.sourceforge.streamsupport:streamsupport-atomic:1.6.0'
    implementation 'net.sourceforge.streamsupport:streamsupport-flow:1.6.0'
    implementation 'net.sourceforge.streamsupport:streamsupport-literal:1.6.0'

    //Location
    implementation 'io.nlopez.smartlocation:library:3.3.3'

    //Firebase UI
    implementation 'com.firebaseui:firebase-ui-firestore:4.0.0'

    //Facebook
    implementation 'com.facebook.android:facebook-login:4.32.0'

    //Search
    implementation 'com.algolia:algoliasearch-android:3.14.1'

    //Butterknife
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    //UI Elements for layout staggering
    implementation 'com.google.android:flexbox:0.3.2'

    //Image Handling Library
    implementation 'com.facebook.fresco:fresco:1.8.0'

    // UI Element for Country-code
    implementation 'com.hbb20:ccp:2.1.2'

    // UI Element for OTP
    implementation 'com.github.GoodieBag:Pinview:v1.3'

    //Loading indicator using shimmer
    implementation 'io.supercharge:shimmerlayout:2.0.0'

    //UI Element for Tooltip
    implementation 'it.sephiroth.android.library.targettooltip:target-tooltip-library:1.3.15'

    //Date/Time Pickers for Hangout Creation
    implementation 'com.wdullaer:materialdatetimepicker:3.5.1'

    //UI Element from Drop-down boxes
    implementation('com.weiwangcn.betterspinner:library-material:1.1.0') {
        exclude group: 'com.android.support', module: 'appcompat-v7'
        exclude group: 'com.android.support', module: 'appcompat-v4'
    }

    //JSON Handling
    implementation 'com.google.code.gson:gson:2.8.2'

    //Permissions using RxPermissions
    implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

    //RxBindings for Platform
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.1.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.1.1'

    //Logging
    implementation 'com.jakewharton.timber:timber:4.6.0'

    //Testing
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

apply plugin: 'com.google.gms.google-services'

【讨论】:

  • 不适合我。也许在我的情况下是子依赖之间的一些冲突引起的:com.android.dex.DexException:多个dex文件定义Lcom/google/android/gms/internal/measurement/zzxk
  • "minSdkVersion 24 android-retrostreams 肯定 没有minSdkVersion 24 要求。
  • 你的理论是错误的。 android-retrostreamsstreamsupport 都可以很好地与 1415minSdkVersion 配合使用。
  • 是的,我修复了我的第一个大文件丢失了 net.sourceforge.streamsupport 中的一些库,所以现在它与 sdk 版本 16 完美配合,我更改了我的答案@KaraModi 你可以检查代码
  • 我有理由确定这是一个 firebase 或 google services 依赖项特定问题,因为在构建失败之前没有任何其他更改。
【解决方案4】:

程序类型已经存在:android.arch.core.util.Function Message{kind=ERROR, text=Program type already present: android.arch.core.util.Function, sources=[Unknown source file], tool name=Optional.of(D8)}

上面我也遇到了同样的问题,那是因为我没有包含核心。

implementation 'com.google.firebase:firebase-core:16.0.1'

注意到您的一些依赖项是 16.0.1,建议您将核心升级到 16.0.1 而不是 16.0.0。

在下面附上了我的依赖供参考,希望对你有用。

implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.firebaseui:firebase-ui-database:4.1.0'

【讨论】:

  • 发布此问题时,com.google.firebase:firebase-core:16.0.0 是可用的最新版本。
  • 无论如何,如果它真的不起作用,请尝试使用旧版本: implementation 'com.firebaseui:firebase-ui-database:0.4.1'
【解决方案5】:

解决方案是在 android studio 中的 build.gradle 上添加以下实现。希望对您有所帮助。

 implementation "android.arch.core:runtime:$version"
 implementation "android.arch.core:common:$version"

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    相关资源
    最近更新 更多