Android

时间:2018-01-14 23:10:00

标签: android firebase firebase-cloud-messaging firebase-analytics android-wake-lock

我在Android应用中使用了多个Firebase产品:

compile 'com.google.firebase:firebase-core:11.0.1'
compile 'com.google.firebase:firebase-database:11.0.1'
compile 'com.google.firebase:firebase-storage:11.0.1'
compile 'com.google.firebase:firebase-auth:11.0.1'
compile 'com.google.firebase:firebase-messaging:11.0.1'

这些产品中的一个或多个似乎正在使用WAKE_LOCK权限。可能是Analytics或FCM。

我可以理解它的需要。然而问题是,在Google Play控制台中,在Android Vitals部分,Google警告我 Stuck部分唤醒锁百分比 2.30%,这大于< strong>行为不良阈值, 0.70%。同样,背景卡住部分唤醒锁 1.40%再次大于不良行为阈值 0.10%

换句话说,Google认为这种唤醒锁是一种“不良行为”。

我不使用唤醒锁,因此问题似乎来自Firebase SDK。

有谁知道是什么造成的?我们可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在查看应用的清单文件时,您可以使用Android Studio's Merged Manifest tab来判断Android清单项的来源。当您在清单上查看此内容时,您会看到WAKE_LOCK来自firebase-iid。

要找出包含firebase-iid的内容,可以使用gradle显示依赖关系图。

./gradlew dependencies

此输出显示它包含在firebase-core和firebase-messaging中:

+--- com.google.firebase:firebase-messaging:11.6.0
|    +--- com.google.firebase:firebase-iid:11.6.0
|    |    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
|    |    +--- com.google.firebase:firebase-common:11.6.0 (*)
|    |    +--- com.google.android.gms:play-services-tasks:11.6.0 (*)
|    |    \--- com.google.firebase:firebase-iid-license:11.6.0
|    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
|    +--- com.google.firebase:firebase-common:11.6.0 (*)
|    \--- com.google.firebase:firebase-messaging-license:11.6.0
\--- com.google.firebase:firebase-core:11.6.0
     \--- com.google.firebase:firebase-analytics:11.6.0
          +--- com.google.android.gms:play-services-basement:11.6.0 (*)
          +--- com.google.firebase:firebase-common:11.6.0 (*)
          +--- com.google.firebase:firebase-analytics-impl:11.6.0
          |    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
          |    +--- com.google.firebase:firebase-iid:11.6.0 (*)
          |    +--- com.google.firebase:firebase-common:11.6.0 (*)
          |    +--- com.google.android.gms:play-services-tasks:11.6.0 (*)
          |    \--- com.google.firebase:firebase-analytics-impl-license:11.6.0
          \--- com.google.firebase:firebase-analytics-license:11.6.0

这里没有什么需要“修复”。 Firebase只是利用唤醒锁来完成正常业务。您可以随时尝试remove the permission,但Firebase可能无法正常使用。别管它。