rtchagas / pingplacepicker

An almost plug and play replacement for Google's Place Picker
Apache License 2.0
142 stars 55 forks source link

Crash when adding dependency #16

Closed Gnzlt closed 5 years ago

Gnzlt commented 5 years ago

Just after adding pingplacepicker dependency, I get the following crash when launching the app. I use Firebase In-App Messaging but I don't know how it can affect the use of this library. 😕

2019-05-24 12:33:05.580 31404-31404/com.example.android E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.android, PID: 31404
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/picasso/OkHttpDownloader;
        at com.google.firebase.inappmessaging.display.internal.injection.modules.PicassoModule.providesFiamController(com.google.firebase:firebase-inappmessaging-display@@17.1.1:52)
        at com.google.firebase.inappmessaging.display.internal.injection.modules.PicassoModule_ProvidesFiamControllerFactory.get(com.google.firebase:firebase-inappmessaging-display@@17.1.1:34)
        at com.google.firebase.inappmessaging.display.internal.injection.modules.PicassoModule_ProvidesFiamControllerFactory.get(com.google.firebase:firebase-inappmessaging-display@@17.1.1:11)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.display.internal.FiamImageLoader_Factory.get(com.google.firebase:firebase-inappmessaging-display@@17.1.1:21)
        at com.google.firebase.inappmessaging.display.internal.FiamImageLoader_Factory.get(com.google.firebase:firebase-inappmessaging-display@@17.1.1:8)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay_Factory.get(com.google.firebase:firebase-inappmessaging-display@@17.1.1:62)
        at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay_Factory.get(com.google.firebase:firebase-inappmessaging-display@@17.1.1:16)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.display.internal.injection.components.DaggerAppComponent.providesFirebaseInAppMessagingUI(com.google.firebase:firebase-inappmessaging-display@@17.1.1:102)
        at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplayRegistrar.buildFirebaseInAppMessagingUI(com.google.firebase:firebase-inappmessaging-display@@17.1.1:74)
        at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplayRegistrar.access$lambda$0(Unknown Source:0)
        at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplayRegistrar$$Lambda$1.create(Unknown Source:2)
        at com.google.firebase.components.ComponentRuntime.lambda$new$0(com.google.firebase:firebase-common@@17.0.0:66)
        at com.google.firebase.components.ComponentRuntime$$Lambda$1.get(Unknown Source:4)
        at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-common@@17.0.0:53)
        at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-common@@17.0.0:155)
        at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@17.0.0:642)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.0.0:358)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.0.0:321)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.0.0:305)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@17.0.0:53)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1920)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1895)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@17.0.0:47)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6440)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5987)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5902)
        at android.app.ActivityThread.access$1100(ActivityThread.java:200)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6718)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
2019-05-24 12:33:05.580 31404-31404/com.example.android E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.OkHttpDownloader" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.example.android-5S_ZIreCxrfj2KN-yqj3cQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.android-5S_ZIreCxrfj2KN-yqj3cQ==/lib/arm64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            ... 37 more
rtchagas commented 5 years ago

@Gnzlt

This is probably a problem with you Proguard configuration that stripped out some OkHttp classes.

That's why I recommend to switch to R8 in the Setup guide.

But, to fix your issue, try to add this to your proguard.config file:

-dontwarn okhttp3. -dontwarn okio. -dontwarn javax.annotation. -dontwarn org.conscrypt. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase -dontnote com.squareup.okhttp. -dontnote retrofit2.Platform -dontwarn retrofit2. -keepattributes Exceptions

rtchagas commented 5 years ago

Actually, looks like Firebase In-App Messaging also uses Picasso and it is messing up with the dependencies.

Try to add: -keep class com.squareup.picasso.* { ; }

rtchagas commented 5 years ago

If you still get this error, please reopen the issue.