每个 Google Play 服务组件需要什么权限?

What permissions are needed by each Google Play Services component?

正如我在 中发现的那样,从 Google Play 服务 7.5 开始,各种 Google Play 服务组件隐式地向您的应用程序添加权限。但显然并非所有组件都需要相同的权限 - 例如,play-services-games:7.8.0 不需要任何权限。

有没有一种简单的方法可以判断特定 Google Play 服务组件将添加哪些权限?

访问$ANDROID_SDK/extras/google/m2repository/com/google/gms。在那里,选择您想要的工件(例如,play-services-maps)和版本(例如,8.1.0)。在您最喜欢的 ZIP 实用程序中打开 AAR,然后查看其中发布的 AndroidManifest.xml 文件,看看是否有 <uses-permission> 元素。然后,打开 POM 文件,查看有哪些依赖项,并为这些依赖项的 AAR 重复该过程。

this excellent article所述,您可以在此处查看构建过程中创建的最终清单文件;

app/build/intermediates/manifests/full/debug/AndroidManifest.xml

您还可以查看显示每个权限来源的报告;

app/build/outputs/logs/manifest-merger-debug-report.txt

您可以在清单中使用类似这样的一行来删除您想要的任何额外权限(但要小心!您可能会破坏功能);

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>