Play 服务广告库 7.5.0 需要 WRITE_EXTERNAL_STORAGE 权限

PlayServices ads library 7.5.0 need WRITE_EXTERNAL_STORAGE permission

在我们的 build.gradle 中,我们将播放服务广告库从 6.5.87 更新到 7.5.0

compile com.google.android.gms:play-services-ads:7.5.0

升级后,我们在合并的 AndroidManifest.xml 中看到一个新权限(位于 /build/intermediates/manifests/full/release/)

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

关于 ManifestMerger 的日志,此权限由 play-services-ads 添加:

ADDED from com.google.android.gms:play-services-ads:7.5.0:30:9
    android:theme
ADDED from com.google.android.gms:play-services-ads:7.5.0:31:13
    android:name
ADDED from com.google.android.gms:play-services-ads:7.5.0:30:19
    uses-permission#android.permission.WRITE_EXTERNAL_STORAGE

在官方文档中,我们没有看到任何需要此权限的提示。仅记录以下权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

(https://developers.google.com/mobile-ads-sdk/docs/dfp/android/quick-start#modifying_the_android_manifest)

有没有官方的资料,为什么要增加这个新的权限?或者这是一个错误?

目前我们无法向用户解释为什么我们需要这个新权限。

编辑:错误警报! 我误解了 manifest-merger-result.txt。 新增的权限不是play-services-ads依赖添加的,我们也添加了play-services-location依赖。 play-services-location 有对 play-services-maps 的引用,它需要此权限来缓存图块。

manifest-merger-result.txt的正确解释是:

uses-permission#android.permission.WRITE_EXTERNAL_STORAGE
ADDED from com.google.android.gms:play-services-maps:7.5.0:22:5

如果添加了 lib,play-services-maps 会自动添加此 "missing" 权限。很高兴知道,如果我们不使用 Map-API,删除此 map-permissions 是否是个好主意。因为我们只使用 Location-API.

这已作为 Google Play services 8.3 的一部分得到修复 - 地图 API(位置依赖)不再需要存储权限,也不再通过清单合并添加它。