在我们的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"/>
是否有官方信息说明为什么添加了这个新权限?还是这是一个错误?
目前我们无法向用户解释为什么需要这个新权限。
编辑:警报错误! 我误解了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。
play-services-ads
模块,而我没有添加android.permission.WRITE_EXTERNAL_STORAGE
权限。 - Jared Burrowsandroid.permission.WRITE_EXTERNAL_STORAGE
权限。实际上,你为什么不直接检查你的设备权限呢? - Jared Burrowsbuild.gradle
文件。 - Jared Burrows