我用过
//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测量的可选权限”是什么意思?删除它也是安全的吗?
答案 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中,这两项权限均已授予。
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 \火力-分析)。
请注意,对于版本10.0.1(我使用的版本),WAKE_LOCK权限不再是可选。 Wakelock不再显示&#34;运行App测量的可选权限。&#34;
删除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组件正常工作非常重要。我告诉分析,崩溃报告和远程配置今天都使用这些令牌