我在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。
有谁知道是什么造成的?我们可以解决这个问题吗?
答案 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可能无法正常使用。别管它。