Firebase Analytics和崩溃的权限

时间:2016-07-23 09:58:48

标签: android firebase firebase-analytics firebase-crash-reporting

我用过

//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" />

我的问题:

  

如果我只使用Firebase Analytics和Crash并且不需要任何消息传递功能,可以按如下方式删除第二个块:

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

在第一个区块中“运行App测量的可选权限”是什么意思?删除它也是安全的吗?

3 个答案:

答案 0 :(得分:2)

Firebase Analytics使用<div class="container"> <div class="row"> <div class="col-sm-8"> <input type="text" class="form-control" id="noun-sentence" placeholder="Enter a sentence here"> </div> <button type="button" class="btn btn-default" onclick="document.getElementById('noun-sentence').value = 'go away'">Check</button> <button type="button" class="btn btn-default" id="noun-button" onclick="changeWords()">Check2</button> </div> <p id="test_p"></p> </div> <script> function changeWords() { document.getElementById('noun-sentence').value = 'go away'; return false; } </script> 。通过在Gradle的Android Studio工具窗口中运行依赖项任务可以看到这一点。输出的这一部分显示了对FirebaseInstanceId的依赖性:

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库关联的清单。我的猜测是,如果没有它,FirebaseAnalytics将无法获取设备的唯一ID,也无法报告数据。

关于firebase-iid权限,请参阅此related answer

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

答案 1 :(得分:2)

是的,你可以删除它们,并且它们必要。此外,在Google sample中,这两项权限均已授予。

根据documentation

  

Firebase Analytics可帮助您了解人们如何使用您的iOS或iOS   Android应用。 SDK自动捕获许多事件和   用户属性,还允许您定义自己的自定义事件   衡量对您的业务至关重要的事情。一旦   数据已被捕获,可通过Firebase在仪表板中使用   安慰。此信息中心提供有关您数据的详细信息 -   从活跃用户和人口统计等摘要数据到更多   详细数据,例如识别您购买的物品最多。

同时观看this视频可能会让您更好地了解测量结果。

答案 2 :(得分:1)

请注意&#34;可选权限&#34;仅指WAKE_LOCK而不是c2dm.permission.RECEIVE。

&#34;可选许可&#34;派生自firebase-analytics的中间文件夹的清单。 (\构建\中间体\分解-AAR \ com.google.firebase \火力-分析)。

enter image description here

请注意,对于版本10.0.1(我使用的版本),WAKE_LOCK权限不再是可选。 Wakelock不再显示&#34;运行App测量的可选权限。&#34;

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组件正常工作非常重要。我告诉分析,崩溃报告和远程配置今天都使用这些令牌