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 M
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'
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'
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.
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"
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!