Android 使用 firebase 冷启动缓慢

Android slow cold start with firebase

我觉得我的应用程序冷启动很慢,当 Firebase Performance 提到这一点时我更加确定。

我用 logcat Displayed 进行了初步比较,显示在我的三星 galaxy S8 上:

/.list.MainActivity: +2s81ms

这是通过在 Android Studio 中按下 play 按钮来复制的 >> 从我的手机中关闭应用程序 phone >> 在我的手机中再次打开它phone(即不使用 android 工作室)

对比已知的应用程序,快的应用程序在400ms左右,慢的应用程序(如Whatsapp和facebook)是1s,所以2秒很多!

我花了将近 2 天的时间,最终找到了以下内容,

如果我正在制作一个简单的 Hello World 应用程序,冷启动时间约为 0.660 秒,这对于应用程序什么也不做,与发布的应用程序相比只有 0.350s

如果我在 gradle 中添加接下来的 4 行(没有任何额外代码!)

implementation 'com.google.firebase:firebase-firestore:21.4.2'
implementation 'com.firebaseui:firebase-ui-auth:6.2.0'
implementation 'com.google.firebase:firebase-auth:19.3.0'
implementation 'com.firebaseui:firebase-ui-firestore:6.2.0'

冷启动提升至约1.2秒,甚至超过Whatsapp和Facebook

这么简单的代码冷启动怎么这么慢?我是否缺少 Android 工作室中的任何设置?也许清单或 gradle?我可以做些什么来改善它?

Hello world with firebase gradle implementation

当您将 Firebase 添加到您的应用程序时,它会合并到 automatically loads and initializes Firebase 的 ContentProvider 中,以便在您的代码被调用后立即使用 API。你正在为此付出代价。但这并不一定能解释一切,因为我们无法确切地看到您的应用可能还在做什么,或者您如何衡量启动时间。

事实证明,我们的调试版本和发布版本之间存在很大差异。在我为 google 上的 alpha 测试人员创建了一个发布版本后,将 minifyEnabledshrinkResourcesdebuggable 设置为 false 等。现在应用程序冷启动大约 700 毫秒。

此外,我不确定,如果一个应用程序刚刚安装和安装并冷启动几次后有区别(当然不要与热启动混淆)

这并不能完全解释我经历过的所有事情,我仍然有点困惑,但我猜我不知道 android 系统(和 firebase)有很多可能会影响冷启动时间