我在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
权限。可能是分析或FCM。
我可以理解哪里需要它。然而,问题是,在Google Play控制台的Android指标部分中,Google警告我卡住的部分唤醒锁定百分比为2.30%,大于不良行为阈值0.70%。同样,后台卡住的部分唤醒锁定为1.40%,再次大于不良行为阈值0.10%。
换句话说,谷歌认为这个数量的唤醒锁是一种"不良行为"。
我不使用唤醒锁,所以问题似乎来自Firebase SDK。
有人知道是什么原因造成的吗?我们能解决这个问题吗?
查看应用的清单文件时,您可以使用 Android Studio 的"合并清单"选项卡来了解 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 只是利用尾流锁来完成其正常业务。 您可以随时尝试删除权限,但随后 Firebase 可能无法正常工作。 别管它。