Giter Site home page Giter Site logo

firebase / firebase-android-sdk Goto Github PK

View Code? Open in Web Editor NEW
2.2K 168.0 553.0 41.45 MB

Firebase Android SDK

Home Page: https://firebase.google.com

License: Apache License 2.0

Java 52.53% JavaScript 0.02% Shell 0.01% Python 0.41% Kotlin 4.60% Makefile 0.08% C 0.03% C++ 0.34% Mustache 0.02% AIDL 0.01% PureBasic 41.92% Ruby 0.01% HTML 0.01% HCL 0.04%
firebase firebase-database firebase-realtime-database firebase-functions firebase-storage database-as-a-service firebase-firestore android firebase-inappmessaging firebase-remote-config

firebase-android-sdk's People

Contributors

allisonbm92 avatar ankitaj224 avatar annzimmer avatar ashwinraghav avatar cherylenkidu avatar danasilver avatar davidmotson avatar daymxn avatar dconeybe avatar ehsannas avatar eldhosembabu avatar emilypgoogle avatar gsakakihara avatar jasonaheron avatar leotianlizhan avatar lfkellogg avatar manny-jimenez avatar mrichards avatar mrober avatar mrwillis21 avatar rlazo avatar rosalyntan avatar rsgowman avatar schmidt-sebastian avatar thatfiredev avatar vinayguthal avatar vkryachko avatar wilhuff avatar wu-hui avatar yifanyang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

firebase-android-sdk's Issues

[CI BLOCKED] :database-test-app:setupSmokeTest failing with "Request had insufficient authentication scopes"

See e.g. https://k8s-gubernator.appspot.com/build/android-ci/pr-logs/pull/firebase_firebase-android-sdk/76/smoke-tests-release/1052700842647359492/

I1017 23:33:19.862] > Task :database-test-app:setupSmokeTest
W1017 23:33:19.963] 
W1017 23:33:19.963] Error: HTTP Error: 403, Request had insufficient authentication scopes.
I1017 23:33:21.862] 
I1017 23:33:21.862] > Task :database-test-app:setupSmokeTest FAILED

NoClassDefFoundError on Firebase-Perf

Environment:

  • Android Studio version: 3.1.4
  • Firebase Component: Performance
  • Component version: 16.1.2

Problem:

Steps to reproduce:

What happened? How can we make the problem occur?

I got this crash report on Crashlytics. The device is a Samsung Galaxy A3, Android version 6.0.1.

Relevant Code:

Fatal Exception: java.lang.NoClassDefFoundError: com.google.android.gms.d.f.gm
       at com.google.android.gms.internal.firebase-perf.zzc.zzc(Unknown Source:54)
       at com.google.firebase.perf.network.FirebasePerfOkHttpClient.zza(Unknown Source:49)
       at com.google.firebase.perf.network.zzg.onResponse(Unknown Source:22)
       at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
       at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
       at java.lang.Thread.run(Thread.java:818)

The obfuscation code is uploaded but it is not mapping correctly. I've followed this tutorial here but nothing has changed: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports

Feature Request: Open Source Firebase Crashlytics SDK

What feature would you like to see?

It would be very useful to also have the Firebase Crashlytics SDK available as open source.

How would you use it?

Having the Crashlytics SDK available under an open source license would allow apps that are distributed via F-Droid to make use of it as it has a restriction of not allowing apps that have dependencies on non open source libraries.

[Firestore] SQLite error: duplicate column name: target_count

  • Android Studio version: 3.2.1
  • Firebase Component: firestore
  • Component version: 17.1.2
    Getting the crash with SQLite operations
    I have seen it occurring on fabric for specific devices:
    Oppo CPH1823-(8.1.0)
    Karbonn K9Smart1GB -(5.1)
    Micromax Q394 -(5.0.2)

Stacktrace:

Issue #: 4816
Issue ID: 5b13ee2d6007d59fcdc643ee
Session ID: 5BF1ADC9017D000173511635EF2E7A9B_DNE_0_v2
Date: 2018-11-18T18:22:00Z
OS Version: 5.0.2
Device: Canvas Juice 3+
RAM Free: 34%
Disk Free: 26.6%

#0. Crashed: main
       at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$5(SourceFile:377)
       at com.google.firebase.firestore.util.AsyncQueue$$Lambda$5.run(SourceFile)
       at android.os.Handler.handleCallback(Handler.java:810)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:189)
       at android.app.ActivityThread.main(ActivityThread.java:5528)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)

--

Fatal Exception: java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev).
       at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$5(SourceFile:377)
       at com.google.firebase.firestore.util.AsyncQueue$$Lambda$5.run(SourceFile)
       at android.os.Handler.handleCallback(Handler.java:810)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:189)
       at android.app.ActivityThread.main(ActivityThread.java:5528)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)

Caused by java.lang.RuntimeException: android.database.sqlite.SQLiteException: duplicate column name: target_count (code 1): , while compiling: ALTER TABLE target_globals ADD COLUMN target_count INTEGER
       at com.google.firebase.firestore.util.AsyncQueue.enqueue(SourceFile:288)
       at com.google.firebase.firestore.util.AsyncQueue$$Lambda$3.run(SourceFile)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at com.google.firebase.firestore.util.AsyncQueue$DelayedStartFactory.run(SourceFile:203)
       at java.lang.Thread.run(Thread.java:818)

Caused by android.database.sqlite.SQLiteException: duplicate column name: target_count (code 1): , while compiling: ALTER TABLE target_globals ADD COLUMN target_count INTEGER
       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(SQLiteConnection.java)
       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893)
       at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:504)
       at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
       at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
       at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
       at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1699)
       at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1630)
       at com.google.firebase.firestore.local.SQLiteSchema.addTargetCount(SourceFile:245)
       at com.google.firebase.firestore.local.SQLiteSchema.runMigrations(SourceFile:92)
       at com.google.firebase.firestore.local.SQLiteSchema.runMigrations(SourceFile:57)
       at com.google.firebase.firestore.local.SQLitePersistence$OpenHelper.onUpgrade(SourceFile:232)
       at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)
       at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
       at com.google.firebase.firestore.local.SQLitePersistence.start(SourceFile:94)
       at com.google.firebase.firestore.core.FirestoreClient.initialize(SourceFile:213)
       at com.google.firebase.firestore.core.FirestoreClient.lambda$new$2(SourceFile:108)
       at com.google.firebase.firestore.core.FirestoreClient$$Lambda$2.run(SourceFile)
       at com.google.firebase.firestore.util.AsyncQueue.lambda$enqueue$4(SourceFile:309)
       at com.google.firebase.firestore.util.AsyncQueue$$Lambda$4.call(SourceFile)
       at com.google.firebase.firestore.util.AsyncQueue.enqueue(SourceFile:285)
       at com.google.firebase.firestore.util.AsyncQueue$$Lambda$3.run(SourceFile)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at com.google.firebase.firestore.util.AsyncQueue$DelayedStartFactory.run(SourceFile:203)
       at java.lang.Thread.run(Thread.java:818)

#0. Crashed: main
       at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$5(SourceFile:377)
       at com.google.firebase.firestore.util.AsyncQueue$$Lambda$5.run(SourceFile)
       at android.os.Handler.handleCallback(Handler.java:810)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:189)
       at android.app.ActivityThread.main(ActivityThread.java:5528)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)

#1. ReferenceQueueDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:133)
       at java.lang.Thread.run(Thread.java:818)

#2. App Event Thread #1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#3. pool-11-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#4. OkHttp Dispatcher
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#5. AdWorker(Default) #1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#6. OkHttp Dispatcher
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#7. pool-3-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#8. Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(SourceFile:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(SourceFile:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:46)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#9. pool-17-thread-1:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#10. pool-17-thread-15:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#11. pool-7-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#12. Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(SourceFile:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(SourceFile:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:46)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#13. RxScheduledExecutorPool-2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#14. pool-17-thread-12:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#15. Picasso-Idle
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)
       at com.squareup.picasso.Utils$PicassoThread.run(SourceFile:411)

#16. RxScheduledExecutorPool-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#17. pool-17-thread-11:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#18. AdWorker(Default) #6
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#19. LooperProvider
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:143)
       at android.os.Looper.loop(Looper.java:146)
       at android.os.HandlerThread.run(HandlerThread.java:61)

#20. pool-13-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#21. AdWorker(Default) #10
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#22. AdWorker(Default) #11
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#23. CleanupReference
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72)
       at com.android.org.chromium.content.common.CleanupReference$1.run(CleanupReference.java:50)

#24. Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(SourceFile:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(SourceFile:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:46)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#25. AdWorker(Default) #3
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#26. pool-17-thread-17:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#27. AdWorker(Default) #8
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#28. pool-4-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:435)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#29. pool-17-thread-9:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#30. GAC_Executor[0]
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at com.google.android.gms.common.util.concurrent.zza.run(Unknown Source:6)
       at java.lang.Thread.run(Thread.java:818)

#31. OkHttp ConnectionPool
       at java.lang.Object.wait(Object.java)
       at okhttp3.ConnectionPool$1.run(SourceFile:67)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#32. pool-17-thread-2:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#33. GoogleApiHandler
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:143)
       at android.os.Looper.loop(Looper.java:146)
       at android.os.HandlerThread.run(HandlerThread.java:61)

#34. Okio Watchdog
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at okio.AsyncTimeout.awaitTimeout(SourceFile:347)
       at okio.AsyncTimeout$Watchdog.run(SourceFile:312)

#35. pool-17-thread-13:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#36. OkHttp final.api.rooter.io
       at com.android.org.conscrypt.NativeCrypto.SSL_read(NativeCrypto.java)
       at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:684)
       at okio.Okio$2.read(SourceFile:140)
       at okio.AsyncTimeout$2.read(SourceFile:237)
       at okio.RealBufferedSource.request(SourceFile:68)
       at okio.RealBufferedSource.require(SourceFile:61)
       at okhttp3.internal.http2.Http2Reader.nextFrame(SourceFile:95)
       at okhttp3.internal.http2.Http2Connection$ReaderRunnable.execute(SourceFile:608)
       at okhttp3.internal.NamedRunnable.run(SourceFile:32)
       at java.lang.Thread.run(Thread.java:818)

#37. AsyncTask #4
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#38. main
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:397)
       at java.util.concurrent.FutureTask.get(FutureTask.java:174)
       at com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait(SourceFile:41)
       at com.crashlytics.android.core.CrashlyticsController.handleUncaughtException(SourceFile:285)
       at com.crashlytics.android.core.CrashlyticsController$5.onUncaughtException(SourceFile:269)
       at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(SourceFile:30)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

#39. OkHttp final.api.rooter.io Writer
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1048)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#40. AsyncTask #3
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#41. OkHttp ConnectionPool
       at java.lang.Object.wait(Object.java)
       at okhttp3.ConnectionPool$1.run(SourceFile:67)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#42. Picasso-Stats
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:143)
       at android.os.Looper.loop(Looper.java:146)
       at android.os.HandlerThread.run(HandlerThread.java:61)

#43. OkHttp Http2Connection
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#44. OkHttp Dispatcher
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#45. Measurement Worker
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at com.google.android.gms.measurement.internal.zzbs.run(Unknown Source:24)

#46. FinalizerWatchdogDaemon
       at java.lang.Thread.sleep(Thread.java)
       at java.lang.Thread.sleep(Thread.java:1031)
       at java.lang.Thread.sleep(Thread.java:985)
       at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:257)
       at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:268)
       at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:216)
       at java.lang.Thread.run(Thread.java:818)

#47. pool-17-thread-10:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#48. Answers Events Handler1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(SourceFile:75)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(SourceFile:30)
       at java.lang.Thread.run(Thread.java:818)

#49. Picasso-Dispatcher
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:143)
       at android.os.Looper.loop(Looper.java:146)
       at android.os.HandlerThread.run(HandlerThread.java:61)

#50. Picasso-Idle
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)
       at com.squareup.picasso.Utils$PicassoThread.run(SourceFile:411)

#51. pool-17-thread-6:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#52. AdWorker(Default) #7
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#53. AsyncTask #5
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#54. Picasso-Idle
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)
       at com.squareup.picasso.Utils$PicassoThread.run(SourceFile:411)

#55. Timer-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.util.Timer$TimerImpl.run(Timer.java:238)

#56. AsyncTask #1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#57. pool-5-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#58. OkHttp ConnectionPool
       at java.lang.Object.wait(Object.java)
       at com.squareup.okhttp.ConnectionPool$1.run(SourceFile:101)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#59. Picasso-Idle
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)
       at com.squareup.picasso.Utils$PicassoThread.run(SourceFile:411)

#60. pool-17-thread-7:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#61. pool-17-thread-3:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#62. Picasso-refQueue
       at java.lang.Object.wait(Object.java)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:113)
       at com.squareup.picasso.Picasso$CleanupThread.run(SourceFile:613)

#63. RxIoScheduler-1 (Evictor)
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#64. pool-17-thread-16:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#65. pool-17-thread-8:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#66. pool-2-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1060)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#67. Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(SourceFile:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(SourceFile:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:46)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#68. Crashlytics Exception Handler1
       at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
       at java.lang.Thread.getStackTrace(Thread.java:580)
       at java.lang.Thread.getAllStackTraces(Thread.java:522)
       at com.crashlytics.android.core.CrashlyticsController.writeSessionEvent(SourceFile:1114)
       at com.crashlytics.android.core.CrashlyticsController.writeFatal(SourceFile:852)
       at com.crashlytics.android.core.CrashlyticsController.access$400(SourceFile:59)
       at com.crashlytics.android.core.CrashlyticsController$6.call(SourceFile:292)
       at com.crashlytics.android.core.CrashlyticsController$6.call(SourceFile:285)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(SourceFile:75)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(SourceFile:30)
       at java.lang.Thread.run(Thread.java:818)

#69. OkHttp ConnectionPool
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:435)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#70. Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(SourceFile:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(SourceFile:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(SourceFile:46)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#71. FinalizerDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72)
       at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173)
       at java.lang.Thread.run(Thread.java:818)

#72. pool-17-thread-5:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#73. AdWorker(Default) #4
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#74. AdWorker(Default) #5
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#75. AdWorker(Default) #9
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#76. OkHttp Dispatcher
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#77. pool-17-thread-14:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#78. OkHttp https://stats.rooter.io/...
       at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(NativeCrypto.java)
       at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:302)
       at okhttp3.internal.connection.RealConnection.connectTls(SourceFile:302)
       at okhttp3.internal.connection.RealConnection.establishProtocol(SourceFile:270)
       at okhttp3.internal.connection.RealConnection.connect(SourceFile:162)
       at okhttp3.internal.connection.StreamAllocation.findConnection(SourceFile:257)
       at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(SourceFile:135)
       at okhttp3.internal.connection.StreamAllocation.newStream(SourceFile:114)
       at okhttp3.internal.connection.ConnectInterceptor.intercept(SourceFile:42)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:147)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:121)
       at okhttp3.internal.cache.CacheInterceptor.intercept(SourceFile:93)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:147)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:121)
       at okhttp3.internal.http.BridgeInterceptor.intercept(SourceFile:93)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:147)
       at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(SourceFile:126)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:147)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:121)
       at okhttp3.logging.HttpLoggingInterceptor.intercept(SourceFile:212)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:147)
       at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:121)
       at okhttp3.RealCall.getResponseWithInterceptorChain(SourceFile:200)
       at okhttp3.RealCall$AsyncCall.execute(SourceFile:147)
       at okhttp3.internal.NamedRunnable.run(SourceFile:32)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#79. AsyncTask #1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#80. HeapTrimmerDaemon
       at dalvik.system.VMRuntime.trimHeap(VMRuntime.java)
       at java.lang.Daemons$HeapTrimmerDaemon.run(Daemons.java:312)
       at java.lang.Thread.run(Thread.java:818)

#81. RxIoScheduler-2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1048)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:776)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#82. pool-17-thread-18:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#83. GAC_Executor[1]
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at com.google.android.gms.common.util.concurrent.zza.run(Unknown Source:6)
       at java.lang.Thread.run(Thread.java:818)

#84. GCDaemon
       at dalvik.system.VMRuntime.concurrentGC(VMRuntime.java)
       at java.lang.Daemons$GCDaemon.run(Daemons.java:345)
       at java.lang.Thread.run(Thread.java:818)

#85. AsyncTask #2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#86. pool-1-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:435)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#87. pool-17-thread-4:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#88. pool-17-thread-19:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

#89. AdWorker(Default) #2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor(Thread.java:1220)
       at sun.misc.Unsafe.park(Unsafe.java:299)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:429)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:331)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:910)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

FirebaseFirestore.getInstance() crashes on firebase-firestore:17.1.1+ due to a NullPointerException on FirebaseAuth

  • Android Studio version: 3.2.1
  • Firebase Component: Firestore
  • Component version: com.google.firebase:firebase-firestore:17.1.1+ (17.1.0 works)

FirebaseFirestore.getInstance() crashes when using firebase-firestore 17.1.1 or higher. It happens as my initial Activity starts:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        firestore = FirebaseFirestore.getInstance();
        //...

This is the stack trace:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: <REDACTED>, PID: 17358
    java.lang.RuntimeException: Unable to start activity ComponentInfo{<REDACTED>/<REDACTED>.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.firebase.auth.internal.zzab.zzf(int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2402)
        at android.app.ActivityThread.access$900(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1318)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5271)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.firebase.auth.internal.zzab.zzf(int)' on a null object reference
        at com.google.firebase.auth.FirebaseAuth.addIdTokenListener(Unknown Source)
        at com.google.firebase.firestore.auth.FirebaseAuthCredentialsProvider.<init>(com.google.firebase:firebase-firestore@@17.1.3:76)
        at com.google.firebase.firestore.FirebaseFirestore.newInstance(com.google.firebase:firebase-firestore@@17.1.3:109)
        at com.google.firebase.firestore.FirestoreMultiDbComponent.get(com.google.firebase:firebase-firestore@@17.1.3:51)
        at com.google.firebase.firestore.FirebaseFirestore.getInstance(com.google.firebase:firebase-firestore@@17.1.3:87)
        at com.google.firebase.firestore.FirebaseFirestore.getInstance(com.google.firebase:firebase-firestore@@17.1.3:72)
        at <REDACTED>.LoggedInActivity.onCreate(LoggedInActivity.java:78)
        at <REDACTED>.HomeActivity.onCreate(HomeActivity.java:51)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2402)ย 
        at android.app.ActivityThread.access$900(ActivityThread.java:151)ย 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1318)ย 
        at android.os.Handler.dispatchMessage(Handler.java:102)ย 
        at android.os.Looper.loop(Looper.java:135)ย 
        at android.app.ActivityThread.main(ActivityThread.java:5271)ย 
        at java.lang.reflect.Method.invoke(Native Method)ย 
        at java.lang.reflect.Method.invoke(Method.java:372)ย 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)ย 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)ย 

The null object seems to be this.zzel in the code below, from com.google.firebase.auth.FirebaseAuth.class (decompiled, since it's not open-sourced), which seems to be (or should be) an instance of IdTokenListenersCountChangedListener, judging from similar, deprecated code found on FirebaseApp.java

    @KeepForSdk
    public void addIdTokenListener(@NonNull com.google.firebase.auth.internal.IdTokenListener var1) {
        Preconditions.checkNotNull(var1);
        this.zzed.add(var1);
        this.zzel.zzf(this.zzed.size());
    }

I was unable to create a minimal crashing project, however. I'll be happy to provide any other info necessary or look into the code when/if the auth portion becomes open-sourced. Again, 17.1.0 works so that could be a starting point for investigation.

Current dependencies:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(':openCVLibrary343')
    // base
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    // Firebase Misc
    implementation 'com.google.firebase:firebase-core:16.0.5'
    implementation 'com.google.firebase:firebase-firestore:17.1.3'
    implementation 'com.google.firebase:firebase-config:16.1.0'
    implementation 'com.firebaseui:firebase-ui-firestore:4.1.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.6'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation 'com.google.firebase:firebase-functions:16.1.2'
    implementation 'com.google.firebase:firebase-storage:16.0.4'
    // Authentication
    implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
    implementation 'com.facebook.android:facebook-login:4.32.0'
    // MLKit
    implementation 'com.google.firebase:firebase-ml-vision:18.0.1'
    implementation 'com.google.firebase:firebase-ml-vision-image-label-model:17.0.2'
    implementation 'com.google.firebase:firebase-ml-model-interpreter:16.2.3'
    // Cameraview plus
    implementation 'com.asksira.android:cameraviewplus:0.9.4'
    // Glide
    implementation 'com.github.bumptech.glide:glide:4.7.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
    // Volley
    implementation 'com.android.volley:volley:1.1.1'

    implementation 'androidx.annotation:annotation:1.0.0'
    implementation 'androidx.paging:paging-runtime:2.1.0-beta01'
    implementation 'commons-codec:commons-codec:1.11'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    implementation 'com.google.code.gson:gson:2.8.5'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}

firebase-functions uses okhttp:2.7.2 which has a MITM vulnerability: CVE-2016-2402

firebase-functions uses okhttp:2.7.2 which has a MITM vulnerability: CVE-2016-2402

https://github.com/firebase/firebase-android-sdk/blob/master/firebase-functions/firebase-functions.gradle contains:
implementation 'com.squareup.okhttp:okhttp:2.7.2'

https://nvd.nist.gov/vuln/detail/CVE-2016-2402:

OkHttp before 2.7.4 and 3.x before 3.1.2 allows man-in-the-middle attackers to bypass certificate pinning by sending a certificate chain with a certificate from a non-pinned trusted CA and the pinned certificate.

Advise: Update okhttp dependency to 2.7.4 or 2.7.5

Firestore tests fail in Android Studio

@schmidt-sebastian noticed yesterday that the firebase-firestore tests fail when run from AS, but not from cli.

java.lang.NoSuchMethodError: com.google.common.base.Strings.lenientFormat(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

	at com.google.common.truth.Subject.named(Subject.java:154)
	at com.google.firebase.firestore.testutil.ComparatorTester.doTestEquivalanceGroupOrdering(ComparatorTester.java:159)
	at com.google.firebase.firestore.testutil.ComparatorTester.testCompare(ComparatorTester.java:145)
	at com.google.firebase.firestore.BlobTest.testComparison(BlobTest.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:606)
	at org.robolectric.internal.SandboxTestRunner$2.evaluate(SandboxTestRunner.java:268)
	at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:130)
	at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:42)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.robolectric.internal.SandboxTestRunner$1.evaluate(SandboxTestRunner.java:84)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

[Robolectric] com.google.firebase.firestore.BlobTest.testMutableBytes: sdk=16; resources=legacy
[Robolectric] com.google.firebase.firestore.BlobTest.testEquals: sdk=16; resources=legacy

I have been able to repro the issue. Initially, I had 17 tests failing in AS, but recreating the AS project brought that down to 5.

It seems related to the issue described here [https://github.com/google/truth/issues/466] which is relevant after the upgrades we got to libraries via @iamyaoxi 's PR #73.

firebase-database version 16.0.2 lacks INTERNET permission

[READ] Step 1: Are you in the right place?

Issues filed here should be about bugs in the code in this repository.
If you have a general question, need help debugging, or fall into some
other category use one of these other channels:

  • For general technical questions, post a question on StackOverflow
    with the firebase tag.
  • For general Firebase discussion, use the firebase-talk
    google group.
  • For help troubleshooting your application that does not fall under one
    of the above categories, reach out to the personalized
    Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.3 alpha
  • Firebase Component: Database
  • Component version: 16.0.2

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

I have a simple app with only these dependencies:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

    implementation 'com.google.firebase:firebase-database:16.0.2'
}

With 16.0.1 I can see this:

$ ./gradlew clean assembleDebug
$ cat app/build/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml  | grep permission
    <uses-permission android:name="android.permission.INTERNET" />

However with 16.0.2 the same operation shows me no permissions in the merged manifest. If I run my app, it crashes pretty much immediately for lack of INTERNET permission.

Relevant Code:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FirebaseApp.initializeApp(this, new FirebaseOptions.Builder()
            .setApplicationId("12345")
            .setDatabaseUrl("https://mockproject-1234.firebaseio.com")
            .build());

        DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    }
}

[Feature Request] ML Kit: On-Device Model Download API

I'd like to request an API to query the download status for MLKit's on-device models.
Ideally, this API would allow the following:

  1. return the current status of the on-device model for a given "kit" (e.g., barcode, face, etc.). Potential responses could be UNAVAILABLE, AVAILABLE, DOWNLOADING, etc.
  2. initiate a download for a specified "kit" and ideally allow an observer to be attached to monitor completion (e.g., Task<Void)
  3. (optional) delete a downloaded model

Here's the current documentation with regards to on-device models:

Optional but recommended: Configure your app to automatically download the ML model to the device after your app is installed from the Play Store.
To do so, add the following declaration to your app's AndroidManifest.xml file:

<application ...>
 ...
 <meta-data
     android:name="com.google.firebase.ml.vision.DEPENDENCIES"
     android:value="barcode" />
 <!-- To use multiple models: android:value="barcode,model2,model3" -->
</application>

If you do not enable install-time model downloads, the model will be downloaded the first time you run the detector. Requests you make before the download has completed will produce no results.

(from https://firebase.google.com/docs/ml-kit/android/read-barcodes, emphasis mine)

I think it's crucial to have APIs to monitor the state of the on-device models, especially since the system makes no guarantees about when the "runtime" download will start/finish.

FirebaseRemoteConfig Unknown Error: 'long com.google.android.gms.internal.config.j.b()' on a null object reference

I received this error log in a FirebaseRemoteConfig.

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'long com.google.android.gms.internal.config.j.b()' on a null object reference
at com.google.android.gms.internal.config.zzan.run(Unknown Source)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)

The problem is I cant find a way to reproduce this error. But I'm sure this is FirebaseRemoteConfig error after I found the class "zzan" in the firebase-config library.

I tried to update the gradle and plugin version but the error keeps showing in the crahslytics.

The libs:
implementation 'com.google.firebase:firebase-core:16.0.3'
implementation 'com.google.firebase:firebase-config:16.0.0'
implementation 'com.google.gms:google-services:4.0.1'
implementation 'com.google.android.gms:play-services-plus:15.0.1'

classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.google.gms:google-services:4.0.1'
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

[Firestore] whereArrayContains not working in offline scenario.

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.2.1
  • Firebase Component: Firestore
  • Component version: 17.1.1

[REQUIRED] Step 3: Describe the problem

Add a string value to document's array by arrayUnion when the device is offline, the snapshot listener shows it added successfully but later we query by whereArrayContains shows empty result.

Steps to reproduce:

Let's say we have a collection todos containing a single document todo1, which had only one field taskIds as a string array. The schema: https://i.imgur.com/CmAFWgx.png

Step to reproduce:

  1. Add a snapshot listener to observe data change:
firestore.collection("todos").addSnapshotListener { snapshot, exception ->
            snapshot?.documents?.forEach {
                Timber.d("todos ${it.data}")
            }
        }

In the beging the log shows: todos {taskIds=[]}

  1. Turn device to offline, kill and re-launch the app.

  2. Create a task document with auto-generate id, add the id to document "todo1" by arrayUnion:

firestore.collection("todos")
        .document("todo1")
        .update("taskIds", FieldValue.arrayUnion(taskId))

The listener at step 1 now shows log: todos {taskIds=[mMifGffC5WEMjALjR6xR]}, so the taskId is added successfully.

  1. Later, within a click event we query todos collection with whereArrayContains, either by get():
firestore.collection("todos")
        .whereArrayContains("taskIds", taskId)
        .get()
        .addOnCompleteListener { task ->
            Timber.d("size ${task.result?.documents?.size}")
            Timber.d("isFromCache ${task.result?.metadata?.isFromCache}")
        }

or addSnapshotListener:

firestore.collection("todos")
        .whereArrayContains("taskIds", taskId)
        .addSnapshotListener { snapshot, exception ->
            Timber.d("size ${snapshot?.documents?.size}")
            Timber.d("isFromCache ${snapshot?.metadata?.isFromCache}")
        }

The result are the same:

size 0
isFromCache true

But I expect the result size be 1 because document "todo1" should be included.

The same steps work well when device online, both query shows size 1 with addSnapshotListener is from cache and get() isn't.

Any reply were be appreciated, thanks.

Firebase RealTime Database Socket connection error

I am using fireabse real time database for my application. At times it it unable to form socket connection. But requests made to API hosted on firebase cloud-fucntion works properly.
I have used following dependencies :-

    implementation 'com.google.firebase:firebase-core:16.0.4'
    implementation 'com.google.firebase:firebase-database:16.0.3'
    implementation 'com.google.firebase:firebase-storage:16.0.3'
    implementation 'com.google.firebase:firebase-auth:16.0.4'

When I turned on the debug level it gives following :-

2018-11-11 14:13:17.932 14446-14513/com.example.com D/ConnectionRetryHelper: Scheduling retry in 933ms
2018-11-11 14:13:18.867 14446-14513/com.example.com D/PersistentConnection: pc_0 - Trying to fetch auth token
2018-11-11 14:13:18.873 14446-14513/com.example.com D/PersistentConnection: pc_0 - Successfully fetched token, opening connection
2018-11-11 14:13:18.878 14446-14513/com.example.com D/Connection: conn_1 - Opening a connection
2018-11-11 14:13:48.881 14446-14513/com.example.com D/WebSocket: ws_1 - timed out on connect
2018-11-11 14:13:48.882 14446-14513/com.example.com D/WebSocket: ws_1 - closed
2018-11-11 14:13:48.882 14446-14513/com.example.com D/WebSocket: ws_1 - closing itself
2018-11-11 14:13:48.882 14446-14513/com.example.com D/Connection: conn_1 - Realtime connection failed
2018-11-11 14:13:48.882 14446-14513/com.example.com D/Connection: conn_1 - closing realtime connection

This keeps happening on certain device like Mi5 note pro, lenov

Firestore ArraysTransformTests flake on CI

It seems frequently the case that a couple of integration tests on Firestore flake out on CI. It is the same couple of tests that fail each time (I think?), but I am not sure if that is just symptomatic of a broader issue.

Example

I0906 21:31:45.702] com.google.firebase.firestore.ArrayTransformsTest > removeFromArrayViaSetMerge[test(AVD) - 8.0.0] FAILED 
I0906 21:31:45.702] 	java.lang.RuntimeException: java.util.concurrent.TimeoutException: Timed out waiting for Task
I0906 21:31:45.702] 	at com.google.firebase.firestore.testutil.IntegrationTestUtil.waitFor(IntegrationTestUtil.java:285)
I0906 21:32:16.601] 
I0906 21:32:16.602] com.google.firebase.firestore.ArrayTransformsTest > createDocumentWithArrayUnion[test(AVD) - 8.0.0] FAILED 
I0906 21:32:16.602] 	java.lang.RuntimeException: java.util.concurrent.TimeoutException: Timed out waiting for Task
I0906 21:32:16.602] 	at com.google.firebase.firestore.testutil.IntegrationTestUtil.waitFor(IntegrationTestUtil.java:285)

@vkryachko If it seems like it is the nature of these tests (as opposed to the nature of CI) that cause these failures, we could consider @schmidt-sebastian 's approach in firebase-database to retry flaky tests. wdyt?

SignInButton does not render Hindi font on api level 19

Step 2: Describe your environment

  • Android Studio version: 3.3 RC2
  • Firebase Component: Auth
  • Component version: firebase-auth:16.1.0 and play-services-auth:16.0.1

Step 3: Describe the problem

I am developing an app in Hindi and using Firebase auth for Google SignIn. My default font is Hindi and
SignInButton button does not render hindi font on API level 19.
Moreover the button text is blank.

Steps to reproduce:

If you run this code on API Level 19, with Hindi font it does not render it.

Relevant Code:

<com.google.android.gms.common.SignInButton
                android:id="@+id/google_sign_in"
                android:layout_width="300dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="16dp"
                android:layout_marginEnd="8dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/auth_message"/>

Need a way to change font based on locale either programmatically or via XML android:fontFamily="@font/hindi_font"

device-2018-12-13-170244

Firebase In-App Messaging leaks Guava to the compile classpath.

  • Android Studio version: 3.2.1
  • Firebase Component: firebase-inappmessaging
  • Component version: 17.0.4

When using implement with the In-App Messaging library, Guava v20.0 is leaked to the APK through the io.grpc dependency group. This causes other annotation processors like Dagger 2 to generate code that uses Guava Collections like ImmutableMap since it detected it, instead of using their internal collections.

Steps to reproduce:

Just include as a dependency

implementation com.google.firebase:firebase-inappmessaging-display:17.0.4

Relevant Code:

The relevant output from ./gradlew :app:dependencies under the flavorReleaseCompileClasspath

+--- com.google.firebase:firebase-inappmessaging-display:17.0.4
|    +--- com.android.support:appcompat-v7:27.1.1 -> 28.0.0 (*)
|    +--- com.android.support:customtabs:27.1.1 -> 28.0.0 (*)
|    +--- com.android.support.constraint:constraint-layout:1.1.2 -> 1.1.0 (*)
|    +--- com.google.auto.value:auto-value-annotations:1.6 -> 1.6.2
|    +--- com.google.dagger:dagger:2.13 -> 2.18 (*)
|    +--- com.google.dagger:dagger-android-support:2.13 -> 2.18 (*)
|    +--- com.google.firebase:firebase-common:16.0.4 (*)
|    +--- com.google.firebase:firebase-core:16.0.4
|    |    +--- com.google.firebase:firebase-analytics:16.0.4
|    |    |    +--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-measurement-api:16.0.2
|    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:16.0.0
|    |    |    |    |    \--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-measurement-base:16.0.3
|    |    |    |    +--- com.google.android.gms:play-services-stats:16.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-tasks:16.0.1 (*)
|    |    |    |    +--- com.google.firebase:firebase-analytics-impl:16.2.2
|    |    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:16.0.0 (*)
|    |    |    |    |    +--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |    |    |    |    +--- com.google.android.gms:play-services-measurement-base:16.0.3
|    |    |    |    |    +--- com.google.android.gms:play-services-stats:16.0.1 (*)
|    |    |    |    |    +--- com.google.android.gms:play-services-tasks:16.0.1 (*)
|    |    |    |    |    +--- com.google.firebase:firebase-common:16.0.3 -> 16.0.4 (*)
|    |    |    |    |    \--- com.google.firebase:firebase-iid:17.0.3 -> 17.0.4 (*)
|    |    |    |    +--- com.google.firebase:firebase-common:16.0.3 -> 16.0.4 (*)
|    |    |    |    \--- com.google.firebase:firebase-iid:17.0.3 -> 17.0.4 (*)
|    |    |    +--- com.google.android.gms:play-services-measurement-base:16.0.3
|    |    |    +--- com.google.android.gms:play-services-stats:16.0.1 (*)
|    |    |    +--- com.google.firebase:firebase-analytics-impl:16.2.2 (*)
|    |    |    \--- com.google.firebase:firebase-common:16.0.3 -> 16.0.4 (*)
|    |    \--- com.google.firebase:firebase-measurement-connector-impl:17.0.2
|    |         +--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |         +--- com.google.android.gms:play-services-measurement-api:16.0.2 (*)
|    |         +--- com.google.android.gms:play-services-measurement-base:16.0.3
|    |         +--- com.google.firebase:firebase-analytics:16.0.4 (*)
|    |         +--- com.google.firebase:firebase-analytics-impl:16.2.2 (*)
|    |         +--- com.google.firebase:firebase-common:16.0.3 -> 16.0.4 (*)
|    |         \--- com.google.firebase:firebase-measurement-connector:17.0.1 (*)
|    +--- com.google.firebase:firebase-inappmessaging:17.0.4
|    |    +--- com.google.android.gms:play-services-clearcut:16.0.0
|    |    |    +--- com.google.android.gms:play-services-base:16.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-phenotype:16.0.0
|    |    |    |    +--- com.google.android.gms:play-services-base:16.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-basement:16.0.1 (*)
|    |    |    |    \--- com.google.android.gms:play-services-tasks:16.0.1 (*)
|    |    |    \--- com.google.android.gms:play-services-tasks:16.0.1 (*)
|    |    +--- com.google.auto.value:auto-value-annotations:1.6 -> 1.6.2
|    |    +--- com.google.dagger:dagger:2.13 -> 2.18 (*)
|    |    +--- com.google.firebase:firebase-common:16.0.4 (*)
|    |    +--- com.google.firebase:firebase-iid:17.0.3 -> 17.0.4 (*)
|    |    +--- com.google.firebase:firebase-measurement-connector:17.0.0 -> 17.0.1 (*)
|    |    +--- com.google.firebase:protolite-well-known-types:16.0.1
|    |    |    \--- com.google.protobuf:protobuf-lite:3.0.1
|    |    +--- com.squareup.okhttp:okhttp:2.7.5
|    |    |    \--- com.squareup.okio:okio:1.6.0 -> 1.15.0
|    |    +--- io.grpc:grpc-okhttp:1.12.0
|    |    |    +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0
|    |    |    |    +--- io.grpc:grpc-context:1.12.0
|    |    |    |    +--- com.google.code.gson:gson:2.7 -> 2.8.0
|    |    |    |    +--- com.google.guava:guava:20.0
|    |    |    |    +--- com.google.errorprone:error_prone_annotations:2.1.2
|    |    |    |    +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1
|    |    |    |    +--- io.opencensus:opencensus-api:0.11.0
|    |    |    |    \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0
|    |    |    |         \--- io.opencensus:opencensus-api:0.11.0
|    |    |    +--- com.squareup.okhttp:okhttp:2.5.0 -> 2.7.5 (*)
|    |    |    \--- com.squareup.okio:okio:1.13.0 -> 1.15.0
|    |    +--- io.grpc:grpc-protobuf-lite:1.12.0
|    |    |    +--- io.grpc:grpc-core:1.12.0 (*)
|    |    |    +--- com.google.protobuf:protobuf-lite:3.0.1
|    |    |    \--- com.google.guava:guava:20.0
|    |    +--- io.grpc:grpc-stub:1.12.0
|    |    |    \--- io.grpc:grpc-core:1.12.0 (*)
|    |    +--- io.reactivex.rxjava2:rxandroid:2.0.2 -> 2.1.0 (*)
|    |    \--- io.reactivex.rxjava2:rxjava:2.1.14 -> 2.2.2 (*)
|    +--- com.squareup.okhttp:okhttp:2.7.5 (*)
|    \--- com.squareup.picasso:picasso:2.5.2

I tried putting exclude module: 'guava' then it crashes at the start up with

    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/common/base/Preconditions;
        at io.grpc.Metadata$Key.<init>(Metadata.java:635)
        at io.grpc.Metadata$Key.<init>(Metadata.java:566)
        at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:740)
        at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:735)
        at io.grpc.Metadata$Key.of(Metadata.java:592)
        at io.grpc.Metadata$Key.of(Metadata.java:588)
        at io.grpc.internal.GrpcUtil.<clinit>(GrpcUtil.java:83)
        at io.grpc.internal.AbstractManagedChannelImplBuilder.<clinit>(AbstractManagedChannelImplBuilder.java:81)
        at io.grpc.okhttp.OkHttpChannelBuilder.forTarget(OkHttpChannelBuilder.java:137)
        at io.grpc.okhttp.OkHttpChannelProvider.builderForTarget(OkHttpChannelProvider.java:48)
        at io.grpc.okhttp.OkHttpChannelProvider.builderForTarget(OkHttpChannelProvider.java:27)
        at io.grpc.ManagedChannelBuilder.forTarget(ManagedChannelBuilder.java:70)
        at com.google.firebase.inappmessaging.internal.injection.modules.GrpcChannelModule.providesGrpcChannel(com.google.firebase:firebase-inappmessaging@@17.0.4:41)
        at com.google.firebase.inappmessaging.internal.injection.modules.GrpcChannelModule_ProvidesGrpcChannelFactory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:27)
        at com.google.firebase.inappmessaging.internal.injection.modules.GrpcChannelModule_ProvidesGrpcChannelFactory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:9)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.internal.injection.components.DaggerUniversalComponent.gRPCChannel(com.google.firebase:firebase-inappmessaging@@17.0.4:211)
        at com.google.firebase.inappmessaging.internal.injection.components.DaggerAppComponent$com_google_firebase_inappmessaging_internal_injection_components_UniversalComponent_gRPCChannel.get(com.google.firebase:firebase-inappmessaging@@17.0.4:388)
        at com.google.firebase.inappmessaging.internal.injection.components.DaggerAppComponent$com_google_firebase_inappmessaging_internal_injection_components_UniversalComponent_gRPCChannel.get(com.google.firebase:firebase-inappmessaging@@17.0.4:375)
        at com.google.firebase.inappmessaging.internal.injection.modules.GrpcClientModule_ProvidesInAppMessagingSdkServingStubFactory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:35)
        at com.google.firebase.inappmessaging.internal.injection.modules.GrpcClientModule_ProvidesInAppMessagingSdkServingStubFactory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:11)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.internal.GrpcClient_Factory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:23)
        at com.google.firebase.inappmessaging.internal.GrpcClient_Factory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:8)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.internal.injection.modules.ApiClientModule_ProvidesApiClientFactory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:40)
        at com.google.firebase.inappmessaging.internal.injection.modules.ApiClientModule_ProvidesApiClientFactory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:12)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.internal.InAppMessageStreamManager_Factory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:64)
        at com.google.firebase.inappmessaging.internal.InAppMessageStreamManager_Factory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:10)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.google.firebase.inappmessaging.FirebaseInAppMessaging_Factory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:33)
        at com.google.firebase.inappmessaging.FirebaseInAppMessaging_Factory.get(com.google.firebase:firebase-inappmessaging@@17.0.4:10)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
  at com.google.firebase.inappmessaging.internal.injection.components.DaggerAppComponent.providesFirebaseInAppMessaging(com.google.firebase:firebase-inappmessaging@@17.0.4:244)
        at com.google.firebase.inappmessaging.FirebaseInAppMessagingRegistrar.providesFirebaseInAppMessaging(com.google.firebase:firebase-inappmessaging@@17.0.4:87)
        at com.google.firebase.inappmessaging.FirebaseInAppMessagingRegistrar.lambda$getComponents$0(com.google.firebase:firebase-inappmessaging@@17.0.4:56)
        at com.google.firebase.inappmessaging.FirebaseInAppMessagingRegistrar$$Lambda$1.create(Unknown Source:2)
        at com.google.firebase.components.Lazy.lambda$new$0(com.google.firebase:firebase-common@@16.0.4:43)
        at com.google.firebase.components.Lazy$$Lambda$1.get(Unknown Source:4)
        at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-common@@16.0.4:54)
        at com.google.firebase.components.AbstractComponentContainer.get(com.google.firebase:firebase-common@@16.0.4:26)
        at com.google.firebase.components.ComponentRuntime.get(com.google.firebase:firebase-common@@16.0.4:34)
        at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-common@@16.0.4:82)
        at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@16.0.4:761)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.0.4:359)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.0.4:324)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.0.4:310)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@16.0.4:53)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1917)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1892)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@16.0.4:47)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6391)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853)
        at android.app.ActivityThread.access$1100(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

com.google.firebase:firebase-firestore:17.1.4 fails with JetifyTransform

After updating from com.google.firebase:firebase-firestore:17.1.3 to com.google.firebase:firebase-firestore:17.1.4 my build started failing. My understanding is that this is due to the JetifyTransform task failing for some unknown reason. This is probably not a bug in the code of com.google.firebase:firebase-firestore but I would argue that those dependencies should not be on the compile classpath in the first place. I don't see any obvious reason why for example org.codehaus.mojo:animal-sniffer-annotations should be there anyway.

Android Studio: 3.4 Canary 7
Gradle: 5.0
Build Tools:

dependencies {
    classpath("com.android.tools.build:gradle:3.4.0-alpha07")
    classpath(kotlin("gradle-plugin", version = "1.3.11"))
    classpath("com.google.gms:google-services:4.2.0")
    classpath("io.fabric.tools:gradle:1.25.4")
}

Build log failure:

Transform koin-android.aar (org.koin:koin-android:1.0.2) with AarTransform
> Transform j2objc-annotations.jar (com.google.j2objc:j2objc-annotations:1.1) with JetifyTransform
> Transform j2objc-annotations.jar (com.google.j2objc:j2objc-annotations:1.1) with IdentityTransform
> Transform checker-compat-qual.jar (org.checkerframework:checker-compat-qual:2.5.2) with JetifyTransform
> Transform checker-compat-qual.jar (org.checkerframework:checker-compat-qual:2.5.2) with IdentityTransform
> Transform animal-sniffer-annotations.jar (org.codehaus.mojo:animal-sniffer-annotations:1.17) with JetifyTransform
> Transform animal-sniffer-annotations.jar (org.codehaus.mojo:animal-sniffer-annotations:1.17) with IdentityTransform
> Transform jsr305.jar (com.google.code.findbugs:jsr305:3.0.2) with JetifyTransform
> Transform jsr305.jar (com.google.code.findbugs:jsr305:3.0.2) with IdentityTransform

> Transform error_prone_annotations.jar (com.google.errorprone:error_prone_annotations:2.2.0) with JetifyTransform
ERROR: [TAG] Failed to resolve variable '${junit.version}'

> Transform error_prone_annotations.jar (com.google.errorprone:error_prone_annotations:2.2.0) with IdentityTransform
> Transform opencensus-api.jar (io.opencensus:opencensus-api:0.12.3) with JetifyTransform
> Transform opencensus-api.jar (io.opencensus:opencensus-api:0.12.3) with IdentityTransform
> Transform opencensus-contrib-grpc-metrics.jar (io.opencensus:opencensus-contrib-grpc-metrics:0.12.3) with JetifyTransform
> Transform opencensus-contrib-grpc-metrics.jar (io.opencensus:opencensus-contrib-grpc-metrics:0.12.3) with IdentityTransform
> Transform grpc-context.jar (io.grpc:grpc-context:1.16.1) with JetifyTransform
> Transform grpc-context.jar (io.grpc:grpc-context:1.16.1) with IdentityTransform

> Transform guava.jar (com.google.guava:guava:26.0-android) with JetifyTransform
ERROR: [TAG] Failed to resolve variable '${animal.sniffer.version}'

> Transform guava.jar (com.google.guava:guava:26.0-android) with IdentityTransform
> Transform okio.jar (com.squareup.okio:okio:1.13.0) with JetifyTransform
> Transform okio.jar (com.squareup.okio:okio:1.13.0) with IdentityTransform

Firebase sqlite crash into write to a readonly database

  • Android device: All android devices
  • Android OS version: M and above
  • Google Play Services version: 11.8.0
  • Firebase/Play Services SDK version: 11.8.0

Crash my application at some times due to the below log from firebase. I need to mentioned that I don't have any sqlite database program in my application. So Please give me a solution.

E/UncaughtException: android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:780)
      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
      at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
      at bca.a(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):61)
      at bcr.run(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):17)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      at java.lang.Thread.run(Thread.java:818)
D/FA: Logging event (FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash, firebase_screen_class(_sc)=LoginActivity, firebase_screen_id(_si)=4554308083261849252, timestamp=1541757271065, fatal=1}]
V/FA: Recording user engagement, ms: 756
D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=756, firebase_screen_class(_sc)=LoginActivity, firebase_screen_id(_si)=4554308083261849252}]
E/SQLiteLog: (1032) statement aborts at 14: [INSERT INTO crash_reports(ts,fatal,payload,size) VALUES (?,?,?,?)] 
E/SQLiteDatabase: Error inserting ts=1541757271266 fatal=1 payload=[B@8d10d3d size=2661
  android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:780)
      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
      at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
      at bcp.run(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):42)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      at java.lang.Thread.run(Thread.java:818)
  
  
>beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
  android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:780)
      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
      at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
      at bca.a(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):61)
      at bcr.run(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):17)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      at java.lang.Thread.run(Thread.java:818)
I/FirebaseCrash: Sending crashes
E/SQLiteLog: (1032) statement aborts at 18: [INSERT OR REPLACE  INTO config_table(config,value) VALUES (?,?)] 
E/UncaughtException: android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:780)
      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
      at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
      at bca.a(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):61)
      at bcr.run(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):17)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      at java.lang.Thread.run(Thread.java:818)
D/FA: Logging event (FE): app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash, firebase_screen_class(_sc)=LoginActivity, firebase_screen_id(_si)=4554308083261849252, timestamp=1541757271339, fatal=1}]
E/SQLiteLog: (1032) statement aborts at 14: [INSERT INTO crash_reports(ts,fatal,payload,size) VALUES (?,?,?,?)] 
E/SQLiteDatabase: Error inserting ts=1541757271539 fatal=1 payload=[B@b41a6f5 size=2755
  android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:780)
      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
      at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
      at bcp.run(:com.google.android.gms.dynamite_dynamitemodulesc@[email protected] (040306-213742215):42)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      at java.lang.Thread.run(Thread.java:818)
I/FirebaseCrash: Sending crashes

Steps to reproduce:

1 .Occuring at some time. No steps to reproduce.

CI frequently fails due to errors fetching maven dependencies (perhaps a general networking issue though?).

See for example https://k8s-gubernator.appspot.com/build/android-ci/pr-logs/pull/firebase_firebase-android-sdk/76/smoke-tests-debug/1052700842647359491/:

W1017 23:22:18.094] Could not resolve all files for configuration ':buildSrc:runtimeClasspath'.
W1017 23:22:18.094] > Could not download sdk-common.jar (com.android.tools:sdk-common:26.0.1)
W1017 23:22:18.094]    > Could not get resource 'https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar'.
W1017 23:22:18.095]       > Connection reset

Based on other flakes, I wonder if there's general network unreliability in the CI environment.

Migrate to Android 28

Since now we have Android 28, with the latest Gradle plugin, why don't we just use the latest dependencies?

Random crash related with In-App Messaging

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.2.1
  • Firebase Component: In-App Messaging
  • Component version: 17.0.3

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

I set up campaign which should show "modal" triggered by "on_foreground" event. From time to time I receive below crash. There are no reasonable reproduce steps. It just happens. I have found that the same issue was reported on picasso project: square/picasso#2002

11-02 12:43:13.888 27311-27311/pl.allegro.sale.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: pl.allegro.sale.debug, PID: 27311
android.view.WindowManager$BadTokenException: Unable to add window โ€“ token null is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:849)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:337)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at com.google.firebase.inappmessaging.display.internal.FiamWindowManager.show(com.google.firebase:firebase-inappmessaging-display@@17.0.3:62)
at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay$5.onSuccess(com.google.firebase:firebase-inappmessaging-display@@17.0.3:385)
at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay.loadNullableImage(com.google.firebase:firebase-inappmessaging-display@@17.0.3:418)
at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay.inflateBinding(com.google.firebase:firebase-inappmessaging-display@@17.0.3:324)
at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay.access$400(com.google.firebase:firebase-inappmessaging-display@@17.0.3:73)
at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay$2.run(com.google.firebase:firebase-inappmessaging-display@@17.0.3:267)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

onCancel not called on permission error

Environment

  • Android Studio version: 3.2 RC3
  • Firebase Component: Database
  • Component version: 16.0.2 / 11.8.0

Problem

addListener to the reference which has no permissions, then
onCancel will be called with DatabaseError: Permission denied.

But adding more than two listeners to the same reference with and without orderBy,
onCancel called for only listeners with orderBy, not for listeners without orderBy.

Steps to reproduce:

val ref = FirebaseDatabase.getInstance().getReference("test")
ref.orderByKey().addListenerForSingleValueEvent(...)  -> called
ref.addListenerForSingleValueEvent(...)  -> not called
ref.orderByKey().addValueEventListener(...)  -> called
ref.addValueEventListener(...)  -> not called
ref.orderByKey().addChildEventListener(...)  -> called
ref.addChildEventListener(...)  -> not called

Add listeners by different order, then onCancel called for all listeners.

val ref = FirebaseDatabase.getInstance().getReference("test")
ref.addListenerForSingleValueEvent(...)  -> called
ref.orderByKey().addListenerForSingleValueEvent(...)  -> called
ref.addValueEventListener(...)  -> called
ref.orderByKey().addValueEventListener(...)  -> called
ref.addChildEventListener(...)  -> called
ref.orderByKey().addChildEventListener(...)  -> called

First-Class Kotlin Support

What feature would you like to see?

Provide Kotlin-specific APIs around the Java SDKs to improve developer experience in that language

FirebaseAppTest flaky test testDirectBoot_shouldInitializeEagerComponentsOnDeviceUnlock

Another test we see flaking often.

I0907 22:02:49.349] com.google.firebase.FirebaseAppTest > testDirectBoot_shouldInitializeEagerComponentsOnDeviceUnlock[test(AVD) - 8.0.0] FAILED 
I0907 22:02:49.349] 	java.lang.AssertionError: The subject was expected to be true, but was false
I0907 22:02:49.349] 	at com.google.firebase.FirebaseAppTest.testDirectBoot_shouldInitializeEagerComponentsOnDeviceUnlock(FirebaseAppTest.java:386)

Stop preguarding

Firebase SDKs are currently shipped as proguarded artifacts.

Among other things, we have been doing this to minimize the size impact for the millions of developers who chose to not proguard their own apps. While this continues to have the desired effect for libraries that bake in dependencies, all open sourced projects have dependencies that are brought in via pom files that accompany releases.

Firebase Storage

App Proguard Enabled SDK Proguard Enabled apk size
Yes Yes 739K
Yes No 740K
No Yes 1.6M
No No 1.7M

Firebase Functions

App Proguard Enabled SDK Proguard Enabled apk size
Yes Yes 804K
Yes No 804K
No Yes 1.8M
No No 1.8M

Firebase Firestore

App Proguard Enabled SDK Proguard Enabled apk size
Yes Yes 1.3M
Yes No 1.3M
No Yes 3.9M
No No 4.0M

Firebase Database

App Proguard Enabled SDK Proguard Enabled apk size
Yes Yes 769K
Yes No 830K
No Yes 1.8M
No No 1.8M

With dependencies being brought in by the developer's build system based on the pom.xml, it can be seen that any significant improvement in size can come only if the developer proguards their apk.

Given the limited value that proguarding the SDK itself has, it makes sense to stop proguarding SDKs in the interest of easier debugging and simpler tooling

Initialize FirebaseApp without google-services.json

  • Android Studio version: 3.2
  • Firebase Component: Core/Analytics(Database, Firestore, Storage, Functions, etc)
  • Component version: 16.0.4

[REQUIRED] Step 3: Describe the problem

I am trying to initialize the FirebaseApp, only by using the FirebaseOptions builder, like this, first thing in my application (I use only applicationId and ApiKey, since I only want the analytics for start) :

FirebaseOptions options = new FirebaseOptions.Builder()
                    .setApplicationId(applicationID) // Required for Analytics.
                    .setApiKey(apiKey) // Required for Auth.
                    .build();
FirebaseApp.initializeApp(context, options);

I do not have a google-services.json file in my project, I have removed the FirebaseInitProvider, like this, in my AndroidManifest.xml:

<provider
    android:name="com.google.firebase.provider.FirebaseInitProvider"
    android:authorities="${applicationId}.firebaseinitprovider"
    tools:node="remove"/>.

When starting the application, while trying to View events in the Android Studio debug log, like this:
adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

I get Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI .

InAppMessaging is not working

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.2.1
  • Firebase Component: InAppMessaing /
  • Component version: com.google.firebase:firebase-inappmessaging-display:17.0.4

[REQUIRED] Step 3: Describe the problem

I tried to implement support InAppMessaging in Anroid application but it is not working.
I see next logs in console:

Starting InAppMessaging runtime with Instance ID <id>
I/FIAM.Headless: Setting display event listener
I/FIAM.Headless: went foreground
I/FIAM.Headless: Forcing fetch from service rather than cache. Test Device: false | App Fresh Install: true
W/FIAM.Headless: Recoverable exception while reading cache: /data/user/0/tj.somon.somontj/files/fiam_impressions_store_file (No such file or directory)
I/FIAM.Headless: Fetching campaigns from service.
W/FIAM.Headless: Service fetch error: PERMISSION_DENIED: Requests from this Android client application <empty> are blocked.
I/FIAM.Headless: Removing display event listener

As I understand I this issue releted to this line "Service fetch error: PERMISSION_DENIED" but I don't see any way how to fix it.
Other part of firebase like push notifications or messaging is working fine.

How can I fix issue with InAppMessaging.

[Firestore] INTERNAL ASSERTION FAILED: Encoded field value should not be null.

Environment

  • Android Studio version: 3.2 RC3
  • Firebase Component: Firestore
  • Component version: 17.1.1

Problem

Occasionally, when creating a new object, I get this:

    java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev).
        at com.google.firebase.firestore.obfuscated.zzgf.zzb(com.google.firebase:firebase-firestore@@17.1.1:377)
        at com.google.firebase.firestore.obfuscated.zzgk.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.AssertionError: INTERNAL ASSERTION FAILED: Encoded field value should not be null.
        at com.google.firebase.firestore.obfuscated.zzge.zza(com.google.firebase:firebase-firestore@@17.1.1:3046)
        at com.google.firebase.firestore.obfuscated.zzge.zza(com.google.firebase:firebase-firestore@@17.1.1:3031)
        at com.google.firebase.firestore.obfuscated.zzfu.zza(com.google.firebase:firebase-firestore@@17.1.1:262)
        at com.google.firebase.firestore.obfuscated.zzfu.zza(com.google.firebase:firebase-firestore@@17.1.1:957)
        at com.google.firebase.firestore.obfuscated.zzfu.zzb(com.google.firebase:firebase-firestore@@17.1.1:727)
        at com.google.firebase.firestore.obfuscated.zzbf.zza(com.google.firebase:firebase-firestore@@17.1.1:166)
        at com.google.firebase.firestore.obfuscated.zzcy.zzc(com.google.firebase:firebase-firestore@@17.1.1:103)
        at com.google.firebase.firestore.obfuscated.zzcy.zza(com.google.firebase:firebase-firestore@@17.1.1:142)
        at com.google.firebase.firestore.obfuscated.zzbg.zza(com.google.firebase:firebase-firestore@@17.1.1:524)
        at com.google.firebase.firestore.obfuscated.zzbo.run(Unknown Source:6)
        at com.google.firebase.firestore.obfuscated.zzcw.zza(com.google.firebase:firebase-firestore@@17.1.1:150)
        at com.google.firebase.firestore.obfuscated.zzbg.zza(com.google.firebase:firebase-firestore@@17.1.1:514)
        at com.google.firebase.firestore.obfuscated.zzak.zza(com.google.firebase:firebase-firestore@@17.1.1:173)
        at com.google.firebase.firestore.obfuscated.zzk.zza(com.google.firebase:firebase-firestore@@17.1.1:91)
        at com.google.firebase.firestore.obfuscated.zzm.zzb(com.google.firebase:firebase-firestore@@17.1.1:137)
        at com.google.firebase.firestore.obfuscated.zzw.run(Unknown Source:4)
        at com.google.firebase.firestore.obfuscated.zzgf.zzc(com.google.firebase:firebase-firestore@@17.1.1:309)
        at com.google.firebase.firestore.obfuscated.zzgj.call(Unknown Source:2)
        at com.google.firebase.firestore.obfuscated.zzgf.zza(com.google.firebase:firebase-firestore@@17.1.1:285)
        at com.google.firebase.firestore.obfuscated.zzgi.run(Unknown Source:4)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
        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:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at com.google.firebase.firestore.obfuscated.zzgf$zza.run(com.google.firebase:firebase-firestore@@17.1.1:203)

Due to the codebase it is very hard for me to create a small reproducible sample. What I am doing is creating a new document, while I have a real time query listener. The document is created, so I assume the app crashes when the query listener is notified about it.

I will investigate more, but I could be more helpful if the owners could point me to the right direction. What is this Encoded field value? What could be the issue?

[Firestore] FR: keepSynced - control what gets in the offline cache

What feature would you like to see?

Something similar to what the Realtime Database offers:

docRef.keepSynced(keepOnlyThisReferenceInLocalCache=true)

This should store ALL data that this document reference contains and remove ALL other data from the cache.

How would you use it?

It would be great to limit the amount of data Firestore syncs and control what gets synced (our users experience cache misses when they are offline, frequently). Our team organized the document model so that every user has its own root that we would like to keep in sync.

That way, one can use the Firestore database as an offline-first solution.

JVM support

What feature would you like to see?

Pure java version to run in non android environments, I believe the original sdk supported this, what was the motivation to drop it?

Before I attempt such as task how difficult would it be to fork this project and remove the android specific code?

How would you use it?

Desktop java (In my case an Android Studio / IntelliJ plugin)

Feature Request: Bundle Sources in Maven SDK Distribution

What feature would you like to see?

First off, I think it's awesome that the Firebase SDK is being open-sourced. However, as an Android developer, my primary use-case for open source is being able to explore the sources from inside Android Studio.
Thus, I think it'd be even more awesome if y'all should ship the sources as part of the Maven bundle that we request through Gradle.

[Firestore] SQLite error: Cannot perform this operation because there is no current transaction

Environment

Android Studio version: 3.2.1
Firebase Component: Firestore
Component version: 17.1.2

Problem

Steps to reproduce:

Almost immediately, when connected to firestore realtime events, we get this:

2018-11-06 11:00:33.924 18673-18673 E/AndroidRuntime: FATAL EXCEPTION: main
    Process:, PID: 18673
    java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev).
        at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$5(com.google.firebase:firebase-firestore@@17.1.2:377)
        at com.google.firebase.firestore.util.AsyncQueue$$Lambda$5.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.IllegalStateException: Cannot perform this operation because there is no current transaction.
        at android.database.sqlite.SQLiteSession.throwIfNoTransaction(SQLiteSession.java:925)
        at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:398)
        at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:683)
        at com.google.firebase.firestore.local.SQLitePersistence.runTransaction(com.google.firebase:firebase-firestore@@17.1.2:172)
        at com.google.firebase.firestore.local.LocalStore.applyRemoteEvent(com.google.firebase:firebase-firestore@@17.1.2:273)
        at com.google.firebase.firestore.core.SyncEngine.handleRemoteEvent(com.google.firebase:firebase-firestore@@17.1.2:315)
        at com.google.firebase.firestore.core.FirestoreClient.handleRemoteEvent(com.google.firebase:firebase-firestore@@17.1.2:230)
        at com.google.firebase.firestore.remote.RemoteStore.raiseWatchSnapshot(com.google.firebase:firebase-firestore@@17.1.2:511)
        at com.google.firebase.firestore.remote.RemoteStore.handleWatchChange(com.google.firebase:firebase-firestore@@17.1.2:420)
        at com.google.firebase.firestore.remote.RemoteStore.access$100(com.google.firebase:firebase-firestore@@17.1.2:52)
        at com.google.firebase.firestore.remote.RemoteStore$1.onWatchChange(com.google.firebase:firebase-firestore@@17.1.2:172)
        at com.google.firebase.firestore.remote.WatchStream.onNext(com.google.firebase:firebase-firestore@@17.1.2:109)
        at com.google.firebase.firestore.remote.WatchStream.onNext(com.google.firebase:firebase-firestore@@17.1.2:39)
        at com.google.firebase.firestore.remote.AbstractStream$StreamObserver.lambda$onNext$1(com.google.firebase:firebase-firestore@@17.1.2:117)
        at com.google.firebase.firestore.remote.AbstractStream$StreamObserver$$Lambda$2.run(Unknown Source:4)
        at com.google.firebase.firestore.remote.AbstractStream$CloseGuardedRunner.run(com.google.firebase:firebase-firestore@@17.1.2:67)
        at com.google.firebase.firestore.remote.AbstractStream$StreamObserver.onNext(com.google.firebase:firebase-firestore@@17.1.2:110)
        at com.google.firebase.firestore.util.FirestoreChannel$1.onMessage(com.google.firebase:firebase-firestore@@17.1.2:107)
        at io.grpc.ForwardingClientCallListener.onMessage(ForwardingClientCallListener.java:33)
        at io.grpc.ForwardingClientCallListener.onMessage(ForwardingClientCallListener.java:33)
        at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:526)
        at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
        at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
        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:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at com.google.firebase.firestore.util.AsyncQueue$DelayedStartFactory.run(com.google.firebase:firebase-firestore@@17.1.2:203)
        at java.lang.Thread.run(Thread.java:        

We have been researching about the issue related with the internal error on firestore module related with SQLite but we found nothing (just clear data on the application each time we restart the app). Our first option to tackle the problem was problably have multiple instances of firestore but this was not the case.

We are trying other options, but at the moment to avoid the crash we disable the persistence through the following code:

firestore.firestoreSettings = FirebaseFirestoreSettings.Builder().setPersistenceEnabled(false).build()

Could you help us with the issue?

Firebase Dynamic Link crashes. setResultOrApiException(Unknown Source:12)

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.1.2
  • Firebase Component: Firebase Dynamic Links
  • Component version: 16.0.1

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

I've been getting this error log after I added Firebase Dynamic Link Invite. I still couldn't reproduce it though.

Fatal Exception: com.google.android.gms.f.f: com.google.android.gms.common.api.b: 8: 
       at com.google.android.gms.tasks.zzu.getResult(Unknown Source:17)
       at com.ordinaryman.android.referral.ReferralManager.init(Unknown Source:18)
       at com.ordinaryman.android.referral.ReferralManager$$Lambda$2.onComplete(Unknown Source:11)
       at com.google.android.gms.tasks.zzj.run(Unknown Source:23)
       at android.os.Handler.handleCallback(Handler.java:789)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6938)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Caused by com.google.android.gms.common.api.b: 8: 
       at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(Unknown Source:12)
       at com.google.android.gms.internal.measurement.zzyn.zza(Unknown Source:2)
       at com.google.android.gms.internal.measurement.zzys.dispatchTransaction(Unknown Source:21)
       at com.google.android.gms.internal.measurement.zzo.onTransact(Unknown Source:22)
       at android.os.Binder.execTransact(Binder.java:682)

Relevant Code:

try {

            generateShortenedDeepLink(context, code, refId, src, imageUrl).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    if (onDoneLoading != null) {
                        onDoneLoading.run();
                    }

                    log.error("Error generating deeplink", e);

                    if (context instanceof BaseActivity) {
                        ((BaseActivity) context).showToastWarn("Error generating code. ");
                    }

                    return;
                }
            }).addOnCompleteListener(task -> {

                BaseActivity act;
                act = (BaseActivity) context;

                String defaultMessage = "Hi, come join me on this app ";
                String linkUrl = task.getResult().getShortLink().toString();
                String textMessage = defaultMessage + " " + linkUrl;

                if (StringUtils.isEmpty(imageUrl)) {
                    shareHandler(act, textMessage, null);
                    if (onDoneLoading != null) {
                        onDoneLoading.run();
                    }
                    return;
                }

                String filename = imageUrl.substring(imageUrl.lastIndexOf('/') + 1);
                File cachePath = new File(context.getCacheDir(), "images");
                cachePath.mkdirs(); // don't forget to make the directory
                File imageFile = new File(cachePath, filename);

                Runnable continuation = () -> {
                    Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName(), imageFile);
                    shareHandler(act, textMessage, contentUri);
                    if (onDoneLoading != null) {
                        app.getMainHandler().postDelayed(onDoneLoading, 3000);
                    }
                };

                if (imageFile.exists()) {
                    continuation.run();
                    return;
                }

                if (act.isNoMoUIChanges()) return;

                Glide.with(context)
                        .asBitmap()
                        .load(imageUrl)
                        .into(new SimpleTarget<Bitmap>() {

                            @Override
                            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {

                                try (FileOutputStream stream = new FileOutputStream(imageFile)) {
                                    resource.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                                } catch (IOException e) {
                                    log.error("Error generating share", e);
                                    if (onDoneLoading != null) {
                                        onDoneLoading.run();
                                    }
                                    return;
                                }
                                continuation.run();
                            }
                        });
            });

        } catch (Exception e) {
            if (context instanceof BaseActivity) {
                ((BaseActivity) context).showToastWarn("Error generating code. Please try again later");
            }
        }

private void shareHandler(BaseActivity context, String smsMsg, Uri contentUri) {

        if(context.isNoMoUIChanges()) return;

        Resources resources = context.getResources();

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
        sendIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
        sendIntent.putExtra(Intent.EXTRA_TEXT, smsMsg);
        sendIntent.setType(context.getContentResolver().getType(contentUri));

        Intent openInChooser = Intent.createChooser(sendIntent, resources.getString(R.string.share_intent_chooser_title));
        context.startActivity(openInChooser);
    }

Customized FirebaseInAppMessagingDisplay not used

[READ] Step 1: Are you in the right place?

Yes, I am

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.2.1
  • Firebase Component: Firebase InAppMessaging
  • Component version: 17.0.4
  • Device: OnePlus 5T, Android 9.0

[REQUIRED] Step 3: Describe the problem

Method displayMessage in custom implementation of FirebaseInAppMessagingDisplay never called.

Steps to reproduce:

  1. Make dummy implementation of FirebaseInAppMessagingDisplay
  2. Register using FirebaseInAppMessaging.getInstance().setMessageDisplayComponent()
  3. Message is displayed, but displayMessage never called, as well as any callback

Relevant Code:

import android.app.Activity
import android.app.Application
import android.os.Bundle
import android.support.annotation.Keep
import android.util.Log
import com.google.firebase.inappmessaging.FirebaseInAppMessaging
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplay
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplayCallbacks
import com.google.firebase.inappmessaging.model.InAppMessage

@Keep
class FirebaseIAMImpl: FirebaseInAppMessagingDisplay, Application.ActivityLifecycleCallbacks {

    override fun displayMessage(inAppMessage: InAppMessage, callbacks: FirebaseInAppMessagingDisplayCallbacks) {
        Log.e(TAG, "displayMessage called")
        callbacks.messageDismissed(FirebaseInAppMessagingDisplayCallbacks.InAppMessagingDismissType.CLICK).addOnSuccessListener {
            Log.e(TAG, "dismiss by click detected")
        }
        callbacks.impressionDetected().addOnSuccessListener {
            Log.e(TAG, "impression detected")
        }
        callbacks.messageClicked().addOnSuccessListener {
            Log.e(TAG, "message clicked")
        }
        callbacks.messageDismissed(FirebaseInAppMessagingDisplayCallbacks.InAppMessagingDismissType.AUTO).addOnSuccessListener {
            Log.e(TAG, "auto-dismiss detected")
        }
        callbacks.messageDismissed(FirebaseInAppMessagingDisplayCallbacks.InAppMessagingDismissType.SWIPE).addOnSuccessListener {
            Log.e(TAG, "swipe dismiss detected")
        }
        callbacks.messageDismissed(FirebaseInAppMessagingDisplayCallbacks.InAppMessagingDismissType.UNKNOWN_DISMISS_TYPE).addOnSuccessListener {
            Log.e(TAG, "unknown dismiss detected")
        }
        val sup = com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay.getInstance()
        sup.displayMessage(inAppMessage, callbacks)
    }


    override fun onActivityPaused(activity: Activity?) {

    }

    override fun onActivityResumed(activity: Activity?) {
    }

    override fun onActivityStarted(activity: Activity?) {
    }

    override fun onActivityDestroyed(activity: Activity?) {
    }

    override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
    }

    override fun onActivityStopped(activity: Activity?) {
    }

    override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
    }

    companion object {
        const val TAG = "FirebaseIAMImpl"
        private val fiam by lazy { FirebaseIAMImpl() }
        fun register(app: Application) {
            FirebaseInAppMessaging.getInstance().isAutomaticDataCollectionEnabled = true
            FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(fiam)
            app.registerActivityLifecycleCallbacks(fiam)
        }
    }

}

Google Auth Linking overwrites other auth providers.

  • Android Studio version: 3.1.4
  • Firebase Component: Authentication
  • Component version: 16.0.3

I am trying to link multiple auth providers for a user, everything is working fine but when user tries to connect google account to other auth providers account, google account seems to overwrite every other account.

Steps to reproduce:

Created account using email and password.
Linked with facebook and twitter account.
And after linking to Google account, it overwrites all the other accounts.

Relevant Code:

AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
FirebaseUser user = mAuth.getCurrentUser();
user.linkWithCredential(credential);

java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.internal.RemoteCall

Describe your environment:

  • Android Studio version: 3.2.1
  • Firebase Component: Authentication
  • Component version: 16.0.5

Describe the problem:

I get a crash when I call FirebaseAuth.signInWithEmailAndPassword()

Steps to reproduce:

Just call the mentioned method.

Here's my stack trace and gradle files:

2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Rejecting re-init on previously-failed class java.lang.Class<com.google.firebase.auth.api.internal.zzct>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/internal/RemoteCall;
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.internal.RemoteCall" on path: DexPathList[[zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/base.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_dependencies_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_0_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_1_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_2_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_3_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_4_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_5_apk.apk", zip file "
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.754 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Rejecting re-init on previously-failed class java.lang.Class<com.google.firebase.auth.api.internal.zzct>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/internal/RemoteCall;
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.internal.RemoteCall" on path: DexPathList[[zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/base.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_dependencies_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_0_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_1_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_2_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_3_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_4_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_5_apk.apk", zip file "
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Rejecting re-init on previously-failed class java.lang.Class<com.google.firebase.auth.api.internal.zzct>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/internal/RemoteCall;
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.internal.RemoteCall" on path: DexPathList[[zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/base.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_dependencies_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_0_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_1_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_2_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_3_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_4_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_5_apk.apk", zip file "
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.755 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.756 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.756 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.756 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.756 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.757 9973-9973/teamup.made.taila.teamup W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@7d4767d
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Rejecting re-init on previously-failed class java.lang.Class<com.google.firebase.auth.api.internal.zzct>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/internal/RemoteCall;
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.internal.RemoteCall" on path: DexPathList[[zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/base.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_dependencies_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_0_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_1_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_2_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_3_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_4_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_5_apk.apk", zip file "
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.api.internal.zzao.zzb(com.google.firebase.FirebaseApp, java.lang.String, java.lang.String, java.lang.String, com.google.firebase.auth.internal.zza) ((null):90)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(java.lang.String, java.lang.String) ((null):190)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(android.view.View) (LoginFragment.kt:45)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClick() (View.java:6597)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.performClickInternal() (View.java:6574)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at boolean android.view.View.access$3100(android.view.View) (View.java:778)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.view.View$PerformClick.run() (View.java:25885)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.os.Looper.loop() (Looper.java:193)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6669)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup I/de.taila.teamu:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
2018-12-02 15:36:14.758 9973-9973/teamup.made.taila.teamup D/AndroidRuntime: Shutting down VM
    
    
    --------- beginning of crash
2018-12-02 15:36:14.759 9973-9973/teamup.made.taila.teamup E/AndroidRuntime: FATAL EXCEPTION: main
    Process: teamup.made.taila.teamup, PID: 9973
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/internal/RemoteCall;
        at com.google.firebase.auth.api.internal.zzao.zzb(Unknown Source:90)
        at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(Unknown Source:190)
        at teamup.made.taila.teamup.auth.LoginFragment$setupLogin$1.onClick(LoginFragment.kt:45)
        at android.view.View.performClick(View.java:6597)
        at android.view.View.performClickInternal(View.java:6574)
        at android.view.View.access$3100(View.java:778)
        at android.view.View$PerformClick.run(View.java:25885)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.internal.RemoteCall" on path: DexPathList[[zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/base.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_dependencies_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_0_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_1_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_2_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_3_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_4_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_5_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_6_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_7_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_8_apk.apk", zip file "/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/base.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_dependencies_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_0_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_1_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_2_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_3_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_4_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_5_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_6_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_7_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_8_apk.apk!/lib/x86_64, /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_slice_9_apk.apk!/lib/x86_64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
2018-12-02 15:36:14.760 9973-9973/teamup.made.taila.teamup E/AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        	... 14 more
    	Suppressed: java.io.IOException: No original dex files found for dex location /data/app/teamup.made.taila.teamup-wl-135tMMiUvhC_WP2BcRQ==/split_lib_resources_apk.apk
        at dalvik.system.DexFile.openDexFileNative(Native Method)
        at dalvik.system.DexFile.openDexFile(DexFile.java:354)
        at dalvik.system.DexFile.<init>(DexFile.java:101)
        at dalvik.system.DexFile.<init>(DexFile.java:75)
        at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394)
        at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354)
        at dalvik.system.DexPathList.<init>(DexPathList.java:164)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
        at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
        at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
        at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
        at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74)
        at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
        at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:727)
        at android.app.LoadedApk.getClassLoader(LoadedApk.java:810)
        at android.app.LoadedApk.getResources(LoadedApk.java:1032)
        at android.app.ContextImpl.createAppContext(ContextImpl.java:2345)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5749)
        at android.app.ActivityThread.access$1100(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        		... 5 more

Here's my app gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

ext.versions = [
        'compileSdk'      : 28,
        'minSdk'          : 21,
        'targetSdk'       : 28,
        'androidx'        : '1.0.0',
        'constraintLayout': '2.0.0-alpha2',
        'coreKtx'         : '1.0.0',
        'coroutines'      : '0.26.1',
        'dagger'          : '2.16',
        'lottie'          : '2.6.0',
        'espresso'        : '3.1.0',
        'glide'           : '4.8.0',
        'googleServices'  : '4.0.1',
        'junit'           : '4.12',
        'moshi'           : '1.8.0',
        'kotlin'          : '1.3.0-rc-190',
        'kotlinTest'      : '3.1.7',
        'koin'            : '1.0.1',
        'ktlint'          : '0.24.0',
        'legacyCoreUtils' : '1.0.0',
        'lifecycle'       : '2.0.0',
        'mockk'           : '1.8.10.kotlin13',
        'firebase'        : '16.0.5',
        'firestore'       : '17.1.3',
        'fireauth'        : '16.0.5',
        'material'        : '1.0.0',
        'okhttp'          : '3.10.0',
        'testRunner'      : '1.1.0',
        'retrofit'        : '2.4.0',
        'rxJava'          : '2.2.3',
        'rxAndroid'       : '2.1.0',
        'rxRelay'         : '2.1.0',
        'flipper'         : '0.10.0',
        'lithoAnnotations': '0.19.0',
        'leakCanary'      : '1.6.1',
        'epoxy'           : '3.0.0-rc1',
        'navigation'      : '1.0.0-alpha06'
]

android {
    compileSdkVersion 28
    configurations.all {
        resolutionStrategy.force 'com.google.android.gms:play-services-basement:15.0.1'
        resolutionStrategy.force 'com.google.android.gms:play-services-base:15.0.1'
        resolutionStrategy.force 'com.google.android.gms:play-services-tasks:15.0.1'
    }
    defaultConfig {
        applicationId "teamup.made.taila.teamup"
        minSdkVersion versions.minSdk
        targetSdkVersion versions.targetSdk
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    androidTestImplementation "androidx.test:runner:${versions.testRunner}"
    androidTestImplementation "androidx.test.espresso:espresso-core:${versions.espresso}"
    // LIFECYCLE
    implementation "androidx.lifecycle:lifecycle-runtime:${versions.lifecycle}"
    implementation "androidx.lifecycle:lifecycle-extensions:${versions.lifecycle}"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:${versions.lifecycle}"
    // UI
    implementation "androidx.constraintlayout:constraintlayout:${versions.constraintLayout}"
    implementation "androidx.cardview:cardview:${versions.androidx}"
    implementation "androidx.legacy:legacy-support-v4:${versions.androidx}"
    implementation "androidx.recyclerview:recyclerview:${versions.androidx}"
    implementation "com.google.android.material:material:${versions.material}"
    implementation "androidx.appcompat:appcompat:${versions.androidx}"
    implementation "com.airbnb.android:lottie:${versions.lottie}"
    implementation "com.airbnb.android:epoxy:${versions.epoxy}"
    // IMAGE PROCESSING
    implementation "com.github.bumptech.glide:glide:${versions.glide}"
    implementation "com.github.bumptech.glide:okhttp3-integration:${versions.glide}"
    kapt "com.github.bumptech.glide:compiler:${versions.glide}"
    // NETWORK
    implementation "com.squareup.okhttp3:okhttp:${versions.okhttp}"
    implementation "com.squareup.okhttp3:logging-interceptor:${versions.okhttp}"
    implementation "com.squareup.retrofit2:retrofit:${versions.retrofit}"
    implementation "com.squareup.retrofit2:converter-moshi:${versions.retrofit}"
    implementation "com.squareup.retrofit2:adapter-rxjava2:${versions.retrofit}"
    implementation "com.squareup.moshi:moshi-kotlin:${versions.moshi}"
    // Dependency Injection
    implementation "com.google.dagger:dagger:${versions.dagger}"
    implementation "com.google.dagger:dagger-android:${versions.dagger}"
    implementation "com.google.dagger:dagger-android-support:${versions.dagger}"
    kapt "com.google.dagger:dagger-android-processor:${versions.dagger}"
    kapt "com.google.dagger:dagger-compiler:${versions.dagger}"
    // Navigation
    implementation "android.arch.navigation:navigation-fragment-ktx:${versions.navigation}"
    implementation "android.arch.navigation:navigation-ui-ktx:${versions.navigation}"
    androidTestImplementation "android.arch.navigation:navigation-testing-ktx:${versions.navigation}"
    // KTX
    implementation "androidx.core:core-ktx:${versions.coreKtx}"
    // FIREBASE
    implementation "com.google.firebase:firebase-core:${versions.firebase}"
    implementation "com.google.firebase:firebase-firestore:${versions.firestore}"
    implementation "com.google.firebase:firebase-auth:${versions.fireauth}"
    // RX
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
    implementation "com.jakewharton.rxrelay2:rxrelay:${versions.rxRelay}"
    // DEBUG
    debugImplementation "com.facebook.flipper:flipper:${versions.flipper}"
    debugImplementation "com.facebook.litho:litho-annotations:${versions.lithoAnnotations}"
    debugImplementation "com.squareup.leakcanary:leakcanary-android:${versions.leakCanary}"
    releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:${versions.leakCanary}"
    // Testing
    testImplementation "junit:junit:${versions.junit}"
    testImplementation "io.kotlintest:kotlintest-runner-junit5:${versions.kotlinTest}"
    testImplementation "io.mockk:mockk:${versions.mockk}"
}

kotlin {
}

kapt {
    generateStubs = true
}

apply plugin: 'com.google.gms.google-services'

Here's my project gradle:

buildscript {
    ext.kotlin_version = '1.3.10'
    ext.support_library = "27.1.1"
    ext.facebook_version = "4.34.0"
    ext.retrofit_version = "2.4.0"

    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.1.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }

    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:deprecation"
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Relevant Code:

firebaseAuth.signInWithEmailAndPassword(etEmail.input(), etPassword.input())
                        .addOnCompleteListener { task ->
                            if (task.isSuccessful) {
                                Log.d(App.TAG, "Login successful! Email = ${firebaseAuth.currentUser?.email}")
                                // TODO: Handle Success - take to browse games
                            } else {
                                Log.w(App.TAG, "Login failed! Email = ${firebaseAuth.currentUser?.email}", task.exception)
                                // TODO: Handle failure
                            }
                        }

FirebaseInstanceId.getInstanceId() failing with SERVICE_NOT_AVAILABLE on WearOS device connected to iPhone

Describe your environment

  • Android Studio version: 3.2
  • Firebase Component: Firebase Core & Cloud Messaging
  • Component version:
    firebase_core: "16.0.4",
    firebase_perf: "16.2.0",
    firebase_messaging: "17.3.4",
    firebase_crashlytics: "2.9.6",
    firebase_plugins: "1.1.5",
    firebase_inappmessaging: "17.0.3",
    firebase_config: "16.1.0",

Describe the problem

WearOS devices connected to an iPhone recently started getting SERVICE_NOT_AVAILABLE errors when calling FirebaseInstanceId.getInstanceId(). The exact exception is:

2018-12-07 14:37:26.529 5093-5093/com.xxxxx.xxxxxx E/OurFirebaseActivity: Could not get Firebase token. Exception: java.io.IOException: SERVICE_NOT_AVAILABLE
    java.io.IOException: SERVICE_NOT_AVAILABLE
        at com.google.firebase.iid.zzr.zza(Unknown Source:66)
        at com.google.firebase.iid.zzr.zza(Unknown Source:79)
        at com.google.firebase.iid.zzu.then(Unknown Source:4)
        at com.google.android.gms.tasks.zzd.run(Unknown Source:5)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

This doesn't seem to be specific to our app only, when looking at the device logs, this seems to happen for other apps/services as well.

2018-12-07 14:02:48.931 891-3870/? I/GCM: Registration for wearable paired to iOS
2018-12-07 14:02:48.956 857-857/? D/AltFCMManager: reading APNS_TOKEN dataitem found a null dataitem: 
2018-12-07 14:02:49.107 857-881/? I/zygote: Background concurrent copying GC freed 
2018-12-07 14:02:53.950 891-3870/? W/GCM: Timed out getting APNS token from clockwork
2018-12-07 14:02:53.963 4509-4544/? E/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE

Steps to reproduce:

Connect Ticwatch Pro to an iPhone device. Update to the latest WearOS version. Try to call FirebaseInstanceId.getInstanceId() and notice SERVICE_NOT_AVAILABLE.

Note that this Ticwatch Pro device is NOT a China Edition (I'd expect Play Services not to work there), and that we're receiving complaints from users with a wide range of WearOS devices. The only common pattern is that they're all connected to an iPhone, and that it all seems to have started in the past week or so.

Also note that interestingly, we are seeing some internal firebase logs tagged with FA-SVC (analytics?) that show a json bundle uploaded to firebase that DOES include a firebase_instance_id property (some data replace with xxxx for privacy):

2018-12-07 14:13:50.811 1281-4717/? V/FA-SVC: Uploading data. app, uncompressed size, data: com.xxxxxxx.xxxxxxx, 375, 
    batch {
      bundle {
        protocol_version: 1
        platform: android
        gmp_version: 13001
        uploading_gmp_version: 14799
        config_version: 1542996287125120
        gmp_app_id: 1:xxxxxxxx:android:xxxxxxxx
        app_id: com.xxxxxxx.xxxxxxx
        app_version: 2.0.0
        app_version_major: 9999
        firebase_instance_id: fLP7soXXXXX
        dev_cert_hash: XXXXXXXXXXXXX
        app_store: manual_install
        ...

Relevant Code:

firebase.instanceId.addOnSuccessListener {
            Log.d("OurActivity", "Token received: " + it.token);
            SimpleRxBackgroundOp(generateQRBitmap, onBitmapReady, onFailure).execute()
        }

/// always fails there with Exception listed above
        firebase.instanceId.addOnFailureListener() {
            Log.e("OurActivity", "Could not get Firebase token. Exception: " + it);
            onFailure.call(it)
        }

Open-Source FirebaseAuth

What feature would you like to see?

Describe the feature you would like to add, ideally proposing a specific API.

Where is FirebaseAuth module? i can see there is a firebaseauth module in iOS but not in android?
Is it somewhere else in another repository? or it didn't open sourced yet? did i miss somthing?

Thanks

CI fails on gradle cache lock timeout.

I encountered a new error on CI, which seems related to gradle acquiring locks on the cache shared across containers. I have not seen this before and it does not seem as disruptive as some of the other flakes we have seen.

Capturing for completeness.

W0910 18:16:46.368] * What went wrong:
W0910 18:16:46.368] Could not resolve all dependencies for configuration ':buildSrc:runtimeClasspath'.
W0910 18:16:46.369] > Timeout waiting to lock artifact cache (/gradle/caches/modules-2). It is currently in use by another Gradle instance.
W0910 18:16:46.372]   Owner PID: 524
W0910 18:16:46.372]   Our PID: 677
W0910 18:16:46.372]   Owner Operation: 
W0910 18:16:46.372]   Our operation: 
W0910 18:16:46.372]   Lock file: /gradle/caches/modules-2/modules-2.lock

FirebaseMessagingService keeps receiving messages after deleteInstanceId() was called

  • Android Studio version: 3.4 Canary 4
  • Firebase Component: Cloud Messaging
  • Component version: 17.3.0
  1. Receive new token in onNewToken() and register it on backend
  2. Turn off the Internet and call FirebaseInstanceId.getInstance().deleteInstanceId()
  3. Send a few messages from your backend using token from step 1
  4. Turn on the Internet
    Actual result: a few messages are received in onMessageReceived(), after that onNewToken() is called
    Expected result: onNewToken() is called, no new messages received

NPE in In-App Messaging component, possibly related to activity switching.

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.2
  • Firebase Component: In-App Messaging
  • Component version: 17.0.3

[REQUIRED] Step 3: Describe the problem

NullPointerException happening in Firebase's in-app message code:

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3788)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3828)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3036)
  at android.app.ActivityThread.-wrap11 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1696)
  at android.os.Handler.dispatchMessage (Handler.java:105)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6938)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
Caused by: java.lang.NullPointerException: 
  at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay.showActiveFiam
  at com.google.firebase.inappmessaging.display.FirebaseInAppMessagingDisplay.onActivityResumed
  at android.app.Application.dispatchActivityResumed (Application.java:240)
  at android.app.Activity.onResume (Activity.java:1364)
  at android.support.v4.app.FragmentActivity.onResume (FragmentActivity.java:485)
  at com.MYAPP.MYACTIVITY.onResume (MyActivity.java:58)
  at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1361)
  at android.app.Activity.performResume (Activity.java:7353)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3763)

Steps to reproduce:

Not 100% sure but we're seeing this happen fairly frequently in our app in production. Our current hunch is that it's related to an in-app message we have scheduled and the crash may occur if the user switches activity while the in-app message is supposed to be displayed.

Not sure it's relevant, but we are using the "top banner" type of message.

Relevant Code:

None - using the stock implementation of the In-App Messaging component.

Task with name 'bundleRelease' not found in project ':firebase-common'

[READ] Step 1: Are you in the right place?

Issues filed here should be about bugs in the code in this repository.
If you have a general question, need help debugging, or fall into some
other category use one of these other channels:

  • For general technical questions, post a question on StackOverflow
    with the firebase tag.
  • For general Firebase discussion, use the firebase-talk
    google group.
  • For help troubleshooting your application that does not fall under one
    of the above categories, reach out to the personalized
    Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: 3.2.1
  • Firebase Component: firebase-common
  • Component version: 16.0.4

[REQUIRED] Step 3: Describe the problem

Task with name 'bundleRelease' not found in project ':firebase-common'

Steps to reproduce:

I'm trying to migrate this to Android gradle plugin 3.2.0 and target Android 28.
You always get the error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.