权限火力地堡分析和故障
//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。
我怀疑删除任何权限是安全的。您可以在没有它们的情况下运行,并查看分析报告是否有任何事件。
请注意“可选权限”仅指WAKE_LOCK而不指c2dm。permission.RECEIVE。
“可选权限”源自firebase-analytics的中间文件夹的清单。 (\构建\中间体\分解-AAR \ com.google.firebase \火力-分析)。
请注意,10.0.1版(版本我用),WAKE_LOCK权限是不再是可有可无的。 Wakelock不再显示“可运行应用程序测量的可选许可”。
去除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,崩溃报告和远程配置都使用这些令牌