PlayServices广告库7.5.0需要WRITE_EXTERNAL_STORAGE权限。

7
在我们的build.gradle文件中,我们将play-services广告库从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

如果添加了该库,play-services-maps会自动添加此“缺失”权限。如果我们不使用地图API,那么删除此地图权限是否是一个好主意,这一点需要知道。因为我们只使用位置API。


你是怎么得到那些“ADDED”日志的?我的所有应用都使用了play-services-ads模块,而我没有添加android.permission.WRITE_EXTERNAL_STORAGE权限。 - Jared Burrows
2
Jared: https://commonsware.com/blog/2015/06/25/hey-where-did-these-permissions-come-from.html - Marcin Orlowski
@MarcinOrlowski?我刚刚在Google Play上检查了我的APK文件。它们不需要android.permission.WRITE_EXTERNAL_STORAGE权限。实际上,你为什么不直接检查你的设备权限呢? - Jared Burrows
请发布您的 build.gradle 文件。 - Jared Burrows
1
这里是:https://dev59.com/RV0a5IYBdhLWcg3wAEo3 - Jared Burrows
显示剩余7条评论
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接