Does anyone face the same problem? After adding firebase performance to project error occurs immediately after starting the application. It is crashing only in debug build, in release build everything works as expected. Maybe someone has real answer because all I found in similar questions was juggling library versions by trial and error method. Multidex is turned ON.
Error:
E/AndroidRuntime: FATAL EXCEPTION: RxCachedThreadScheduler-2
Process: {PROJECT PACKAGE}, PID: 9872
io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/perf/network/FirebasePerfUrlConnection;
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:69)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/perf/network/FirebasePerfUrlConnection;
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy.createHttpUrlConnection(WalledGardenInternetObservingStrategy.java:124)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy.isConnected(WalledGardenInternetObservingStrategy.java:107)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy$1.apply(WalledGardenInternetObservingStrategy.java:66)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy$1.apply(WalledGardenInternetObservingStrategy.java:64)
at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:57)
at io.reactivex.internal.operators.observable.ObservableInterval$IntervalObserver.run(ObservableInterval.java:82)
at io.reactivex.Scheduler$PeriodicDirectTask.run(Scheduler.java:532)
at io.reactivex.Scheduler$Worker$PeriodicTask.run(Scheduler.java:479)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.perf.network.FirebasePerfUrlConnection" on path: DexPathList[[zip file "/data/app/{PROJECT PACKAGE}--VDzbFrnWyQza3gXDNMSSA==/base.apk"],nativeLibraryDirectories=[/data/app/{PROJECT PACKAGE}--VDzbFrnWyQza3gXDNMSSA==/lib/x86_64, /data/app/{PROJECT PACKAGE}--VDzbFrnWyQza3gXDNMSSA==/base.apk!/lib/x86_64, /system/lib64, /system/product/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy.createHttpUrlConnection(WalledGardenInternetObservingStrategy.java:124)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy.isConnected(WalledGardenInternetObservingStrategy.java:107)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy$1.apply(WalledGardenInternetObservingStrategy.java:66)
at com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.strategy.WalledGardenInternetObservingStrategy$1.apply(WalledGardenInternetObservingStrategy.java:64)
at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:57)
at io.reactivex.internal.operators.observable.ObservableInterval$IntervalObserver.run(ObservableInterval.java:82)
at io.reactivex.Scheduler$PeriodicDirectTask.run(Scheduler.java:532)
at io.reactivex.Scheduler$Worker$PeriodicTask.run(Scheduler.java:479)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Buildscript:
buildscript {
ext {
commonVariables = [
applicationVersionName: "{APP VERSION}",
applicationVersionCode: {APP VERSION CODE},
compileSdkVersion : 29,
minSdkVersion : 21,
targetSdkVersion : 29,
buildToolsVersion : "29.0.2"
]
kotlin_version = "1.3.72"
rx_binding_version = "3.1.0"
koin_version = "2.1.5"
moshi_version = "1.9.2"
lifecycle_version = "2.2.0"
paging_version = "2.1.2"
flipper_version = "0.44.0"
nav_version = "2.2.2"
room_version = "2.2.5"
realm_version = "6.1.0"
commonDependencies = [
kotlinLib : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version",
appCompat : "androidx.appcompat:appcompat:1.1.0",
rxJava : "io.reactivex.rxjava2:rxjava:2.2.19",
rxAndroid : "io.reactivex.rxjava2:rxandroid:2.1.1",
rxKotlin : "io.reactivex.rxjava2:rxkotlin:2.4.0",
coreKtx : "androidx.core:core-ktx:1.2.0",
activity : "androidx.activity:activity-ktx:1.1.0",
fragment : "androidx.fragment:fragment-ktx:1.2.4",
recyclerView : "androidx.recyclerview:recyclerview:1.1.0",
swipeRefreshLayout : "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0",
materialComponents : "com.google.android.material:material:1.2.0-alpha06",
constraintLayout : "androidx.constraintlayout:constraintlayout:1.1.3",
jodaTime : 'joda-time:joda-time:2.10.6',
rxPermissions : "com.github.tbruyelle:rxpermissions:0.10.2",
rxBindingsCore : "com.jakewharton.rxbinding3:rxbinding-core:$rx_binding_version",
rxBindingsAppCompat : "com.jakewharton.rxbinding3:rxbinding-appcompat:$rx_binding_version",
rxBindingsMaterial : "com.jakewharton.rxbinding3:rxbinding-material:$rx_binding_version",
rxBindingsRecyclerView : "com.jakewharton.rxbinding3:rxbinding-recyclerview:$rx_binding_version",
koin : "org.koin:koin-core:$koin_version",
koinExperimental : "org.koin:koin-core-ext:$koin_version",
koinAndroidX : "org.koin:koin-android:$koin_version",
koinAndroidXScope : "org.koin:koin-androidx-scope:$koin_version",
koinAndroidXViewModel : "org.koin:koin-androidx-viewmodel:$koin_version",
koinAndroidXFragment : "org.koin:koin-androidx-fragment:$koin_version",
koinAndroidXExperimental: "org.koin:koin-androidx-ext:$koin_version",
moshi : "com.squareup.moshi:moshi-kotlin:$moshi_version",
moshiKapt : "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version",
moshiAdapters : "com.squareup.moshi:moshi-adapters:$moshi_version",
lifecycleRuntime : "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version",
lifecycleExtensions : "androidx.lifecycle:lifecycle-extensions:$lifecycle_version",
pagingCommon : "androidx.paging:paging-common-ktx:$paging_version",
pagingRuntime : "androidx.paging:paging-runtime-ktx:$paging_version",
pagingRxJava : "androidx.paging:paging-rxjava2-ktx:$paging_version",
flipper : "com.facebook.flipper:flipper:$flipper_version",
flipperNetworkPlugin : "com.facebook.flipper:flipper-network-plugin:$flipper_version",
soloader : "com.facebook.soloader:soloader:0.5.1",
navigationRuntime : "androidx.navigation:navigation-runtime-ktx:$nav_version",
navigationUI : "androidx.navigation:navigation-fragment-ktx:$nav_version",
navigationFragment : "androidx.navigation:navigation-ui-ktx:$nav_version",
room : "androidx.room:room-runtime:$room_version",
roomKtx : "androidx.room:room-ktx:$room_version",
rxRoom : "androidx.room:room-rxjava2:$room_version",
roomAnnotation : "androidx.room:room-compiler:$room_version"
]
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.google.gms:google-services:4.3.3"
classpath "com.google.firebase:firebase-crashlytics-gradle:2.1.1"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
classpath "io.realm:realm-gradle-plugin:$realm_version"
classpath 'com.google.firebase:perf-plugin:1.3.1'
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
App gradle:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: "androidx.navigation.safeargs.kotlin"
apply plugin: 'realm-android'
apply plugin: 'com.google.firebase.firebase-perf'
android {
...
defaultConfig {
...
multiDexEnabled true
...
}
}
dependencies {
...
implementation 'com.android.support:multidex:1.0.3'
releaseImplementation 'com.google.firebase:firebase-analytics:17.4.2'
releaseImplementation 'com.google.firebase:firebase-crashlytics:17.0.0'
releaseImplementation 'com.google.firebase:firebase-perf:19.0.7'
implementation 'com.google.firebase:firebase-messaging:20.2.0'
implementation 'com.google.firebase:firebase-ml-vision:24.0.3'
implementation 'com.google.firebase:firebase-ml-vision-barcode-model:16.1.1'
...
}
Either include all or remove all of these
Build Gradle (AppName)
dependencies {
classpath 'com.google.firebase:perf-plugin:1.3.4'
}
Build Gradle (:app)
At top of page
apply plugin: 'com.google.firebase.firebase-perf'
Then
dependencies {
implementation 'com.google.firebase:firebase-perf:19.1.0'
}
Changing
releaseImplementation 'com.google.firebase:firebase-analytics:17.4.2'
releaseImplementation 'com.google.firebase:firebase-crashlytics:17.0.0'
releaseImplementation 'com.google.firebase:firebase-perf:19.0.7'
To
implementation 'com.google.firebase:firebase-analytics:17.4.2'
implementation 'com.google.firebase:firebase-crashlytics:17.0.0'
implementation 'com.google.firebase:firebase-perf:19.0.7'
Should solve the issue as those dependencies are currently defined only for release buildType
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With