square/reader-sdk-android-quickstart

Adding firebase crash the sample app

vuanhnguyen opened this issue · 1 comments

I want to use reader sdk and firebase for my project. It seems like the Reader SDK library conflicts with firebase. As soon as I added this to the gradle build:

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

This example app crash with this error
2018-11-06 23:12:07.299 8920-8920/com.example.readersdk E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.readersdk, PID: 8920 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Api$zzf; at com.google.android.gms.safetynet.SafetyNet.<clinit>(Unknown Source) at com.google.android.gms.safetynet.SafetyNet.getClient(Unknown Source) at com.squareup.safetynet.SafetyNetModule.getClient(SafetyNetModule.java:18) at com.squareup.safetynet.SafetyNetModule_GetClientFactory.get(SafetyNetModule_GetClientFactory.java:24) at com.squareup.safetynet.SafetyNetModule_GetClientFactory.get(SafetyNetModule_GetClientFactory.java:10) at com.squareup.safetynet.SafetyNetWrapper_Factory.get(SafetyNetWrapper_Factory.java:38) at com.squareup.safetynet.SafetyNetWrapper_Factory.get(SafetyNetWrapper_Factory.java:10) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.squareup.safetynet.SafetyNetRunner_Factory.get(SafetyNetRunner_Factory.java:39) at com.squareup.safetynet.SafetyNetRunner_Factory.get(SafetyNetRunner_Factory.java:10) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.squareup.LoggedInScopeRunner_Factory.get(LoggedInScopeRunner_Factory.java:269) at com.squareup.LoggedInScopeRunner_Factory.get(LoggedInScopeRunner_Factory.java:50) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.squareup.DaggerReaderSdkReleaseAppComponent$ReaderSdkReleaseLoggedInComponentImpl.loggedInScopeRunner(DaggerReaderSdkReleaseAppComponent.java:8306) at com.squareup.RegisterAppDelegate.onAuthenticated(RegisterAppDelegate.java:575) at com.squareup.RegisterAppDelegate$2.onLoggedIn(RegisterAppDelegate.java:541) at com.squareup.account.FileBackedAuthenticator.load(FileBackedAuthenticator.java:127) at com.squareup.RegisterAppDelegate.loadAuthenticator(RegisterAppDelegate.java:530) at com.squareup.RegisterAppDelegate.onEnterScope(RegisterAppDelegate.java:493) at shadow.mortar.MortarScope.register(MortarScope.java:199) at com.squareup.RegisterAppDelegate.createAppScope(RegisterAppDelegate.java:367) at com.squareup.RegisterAppDelegate.onCreate(RegisterAppDelegate.java:210) at com.squareup.sdk.reader.internal.AppBootstrapHolder.onCreate(AppBootstrapHolder.java:23) at com.squareup.sdk.reader.ReaderSdk.initialize(ReaderSdk.java:37) at com.example.readersdk.ExampleApplication.onCreate(ExampleApplication.java:14) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5503) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1595) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6251) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)

Hi,

Reader SDK depends on play-services-safetynet:12.0.1 which depends on play-services-basement:12.0.1 but the version of firebase you are using upgrades play services dependencies to a higher version without upgrading safety net.

Use ./gradlew app:dependencies to figure out which versions of play-services-basement you are depending on, then add a dependency to safety net with a version that matches the play-services-basement you need.

As you upgrade, you may get a new crash (Didn't find class "com.google.android.gms.ads.identifier.AdvertisingIdClient") because the AdvertisingIdClient moved out of the core of play services in later versions. In that case, you'll need to add a dependency to play-services-ads-identifier