权限火力地堡分析和故障

问题描述:

我用权限火力地堡分析和故障

//Analytics 
compile 'com.google.firebase:firebase-core:9.2.1' 
// Crash 
compile 'com.google.firebase:firebase-crash:9.2.1' 

并取得明显产生在我的那些家伙:

<!-- Required permission for App measurement to run. --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<!-- Optional permission for App measurement to run. --> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

然后我们有以下块

<permission 
    android:name="my.package.name.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" /> 

我的问题:

如果我只用火力地堡分析和故障,并且不需要任何通讯功能,是否确定如下除去第二块:

<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" tools:node="remove" /> 

是什么意思“的应用程序可选许可测量运行“在第一个块?删除它也安全吗?

Firebase Analytics使用FirebaseInstanceId。这可以通过在Gradle的Android Studio工具窗口中运行依赖性任务来看到。输出的该部分示出了FirebaseInstanceId的依赖性:

+--- com.google.firebase:firebase-core:9.2.1 
| \--- com.google.firebase:firebase-analytics:9.2.1 
|   +--- com.google.android.gms:play-services-basement:9.2.1 
|   | \--- com.android.support:support-v4:24.1.0 
|   |   \--- LOCAL: internal_impl-24.1.0.jar 
|   +--- com.google.firebase:firebase-common:9.2.1 
|   | +--- com.google.android.gms:play-services-basement:9.2.1 
|   | | \--- com.android.support:support-v4:24.1.0 
|   | |   \--- LOCAL: internal_impl-24.1.0.jar 
|   | \--- com.google.android.gms:play-services-tasks:9.2.1 
|   |   \--- com.google.android.gms:play-services-basement:9.2.1 
|   |    \--- com.android.support:support-v4:24.1.0 
|   |     \--- LOCAL: internal_impl-24.1.0.jar 
|   \--- com.google.firebase:firebase-analytics-impl:9.2.1 
|    +--- com.google.android.gms:play-services-basement:9.2.1 
|    | \--- com.android.support:support-v4:24.1.0 
|    |   \--- LOCAL: internal_impl-24.1.0.jar 
|    +--- com.google.firebase:firebase-iid:9.2.1 <== FirebaseInstanceId 
|    | +--- com.google.android.gms:play-services-basement:9.2.1 
|    | | \--- com.android.support:support-v4:24.1.0 
|    | |   \--- LOCAL: internal_impl-24.1.0.jar 
|    | \--- com.google.firebase:firebase-common:9.2.1 
|    |   +--- com.google.android.gms:play-services-basement:9.2.1 
|    |   | \--- com.android.support:support-v4:24.1.0 
|    |   |   \--- LOCAL: internal_impl-24.1.0.jar 
|    |   \--- com.google.android.gms:play-services-tasks:9.2.1 
|    |    \--- com.google.android.gms:play-services-basement:9.2.1 
|    |     \--- com.android.support:support-v4:24.1.0 
|    |      \--- LOCAL: internal_impl-24.1.0.jar 
|    \--- com.google.firebase:firebase-common:9.2.1 
|     +--- com.google.android.gms:play-services-basement:9.2.1 
|     | \--- com.android.support:support-v4:24.1.0 
|     |   \--- LOCAL: internal_impl-24.1.0.jar 
|     \--- com.google.android.gms:play-services-tasks:9.2.1 
|      \--- com.google.android.gms:play-services-basement:9.2.1 
|        \--- com.android.support:support-v4:24.1.0 
|         \--- LOCAL: internal_impl-24.1.0.jar 

C2D_MESSAGE许可来自与firebase-iid库关联的清单。我的猜测是,如果没有它,FirebaseAnalytics将无法获得该设备的唯一ID,并且无法报告数据。

关于WAKE_LOCK权限,请参阅此related answer

我怀疑删除任何权限是安全的。您可以在没有它们的情况下运行,并查看分析报告是否有任何事件。

是的,你可以删除它们,它们是而不是必要的。此外在谷歌sample没有授予这两个权限。

根据documentation

火力地堡Analytics(分析)可以帮助您了解人们如何使用您的iOS或 Android应用程序。 SDK自动捕获许多事件和 用户属性,还允许您定义自己的自定义事件 来衡量对您的业务而言唯一重要的事情。一旦捕获了数据,您就可以通过Firebase 控制台在仪表板中找到该数据。该仪表板可提供有关您的数据的详细数据 - 从活动用户和受众特征等摘要数据到更多 详细数据,例如识别您最常购买的商品。

也看到this视频可能会给你更好的测量思路。

请注意“可选权限”仅指WAKE_LOCK而不指c2dm。permission.RECEIVE。

“可选权限”源自firebase-analytics的中间文件夹的清单。 (\构建\中间体\分解-AAR \ com.google.firebase \火力-分析)。

enter image description here

请注意,10.0.1版(版本我用),WAKE_LOCK权限是不再是可有可无的。 Wakelock不再显示“可运行应用程序测量的可选许可”。

enter image description here

去除WAKE_LOCK权限将导致a lot of crashes

至于其他权限。根据Doug Stevenson在https://groups.google.com/d/msg/firebase-talk/CXgecSxgsRE/84PsoyTKGgAJ C2D_MESSAGE和c2dm.permission.RECEIVE很重要。

事实证明,那些似乎只与消息传递相关的其他权限实际上是由分析和其他Firebase组件间接使用的。原因是他们需要生成需要定期轮换的安全令牌。这由实例ID库处理,您可以在此处阅读:https://developers.google.com/instance-id/

...它们对确保Firebase组件正常工作非常重要)。我被告知Google Analytics,崩溃报告和远程配置都使用这些令牌