Build fails with 'Program type already present: android.arch.core.util.Function'

别等时光非礼了梦想. 提交于 2019-12-17 09:21:15

问题


After updating my Firebase and Play Services dependencies as well as the Play Services Plugin my project fails to build. I've tried multiple Clean-Rebuilds and my app has MultiDex enabled. Reverting to my original dependency versions is also not an option as I added a dependency for cloud functions for which the latest version is incompatible with my other firebase dependencies. I can see the following under Android Issues

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)}

I also see an error message under Run Tasks

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: 

My gradle dependencies

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'
}

回答1:


I found the solution which some great guy posted on GitHub. Instead of downgrading your firebaseUI database, you can add arch common and runtime dependencies which are these:

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

Just add these in your app: module dependencies section and you know build it.




回答2:


My project works with the latest version of firebase core, database, messaging and auth dependencies and latest 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'
    }
}

The problem evolves when adding implementation 'com.firebaseui:firebase-ui-database:4.0.0'

It shows this error:

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)}

The solution was to downgrade implementation 'com.firebaseui:firebase-ui-database:4.0.0' to implementation 'com.firebaseui:firebase-ui-database:3.3.1' as follows:

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'
}

I hope Google will solve this issue in future updates.

Hope that helped!




回答3:


The solution is to add the below implemention on your build.gradle in android studio. Hope it helps.

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



回答4:


Try replacing gradle files with:

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()
    }
}

And Module:app grandle with:

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'



回答5:


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)}

I had the same problem above, and it was because i didn't include the core.

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

Noted some of your dependency is 16.0.1, would suggest you upgrade the core to 16.0.1 instead of 16.0.0.

Have enclosed my dependency below for reference, hope you find it useful.

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'


来源:https://stackoverflow.com/questions/50524672/build-fails-with-program-type-already-present-android-arch-core-util-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!