4

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

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

是什麼意思「的應用程序可選許可測量運行「在第一個塊?刪除它也安全嗎?

回答

2

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

我懷疑刪除任何權限是安全的。您可以在沒有它們的情況下運行,並查看分析報告是否有任何事件。

2

是的,你可以刪除它們,它們是而不是必要的。此外在谷歌sample沒有授予這兩個權限。

根據documentation

火力地堡Analytics(分析)可以幫助您瞭解人們如何使用您的iOS或 Android應用程序。 SDK自動捕獲許多事件和 用戶屬性,還允許您定義自己的自定義事件 來衡量對您的業務而言唯一重要的事情。一旦捕獲了數據,您就可以通過Firebase 控制檯在儀表板中找到該數據。該儀表板可提供有關您的數據的詳細數據 - 從活動用戶和受衆特徵等摘要數據到更多 詳細數據,例如識別您最常購買的商品。

也看到this視頻可能會給你更好的測量思路。

1

請注意「可選權限」僅指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,崩潰報告和遠程配置都使用這些令牌