为什么在包含Google Play服务库时,权限会自动添加到我的AndroidManifest中

时间:2015-06-05 04:37:30

标签: android admob android-manifest google-play-services android-permissions

我注意到当我在build.gradle文件中使用以下内容时,会自动添加以下权限

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

早期版本的播放服务没有出现这种情况。 有没有人有解决方案来删除这些不需要的权限?

我只使用广告功能(INTERNET和ACCESSNETWORK_STATE)。 我不需要LOCATION和USE_CREDENTIALS权限。 如何删除这些不需要的权限?

我注意到'manifest-merger-xxx-debug-report.txt'文件包含以下内容

 ...<snipped bunch of other merges>
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5
    android:name
        ADDED from com.google.android.gms:play-services-maps:7.5.0:22:22
uses-permission#android.permission.ACCESS_COARSE_LOCATION
ADDED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
    android:name
        ADDED from com.google.android.gms:play-services-maps:7.5.0:23:22
uses-feature#0x00020000
ADDED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
    android:glEsVersion
        ADDED from com.google.android.gms:play-services-maps:7.5.0:25:8
    android:required
        ADDED from com.google.android.gms:play-services-maps:7.5.0:26:8
android:uses-permission#android.permission.READ_EXTERNAL_STORAGE
IMPLIED from AndroidManifest.xml:2:1 reason: com.google.android.gms.maps requested WRITE_EXTERNAL_STORAGE
uses-permission#android.permission.GET_ACCOUNTS
ADDED from com.google.android.gms:play-services-wallet:7.5.0:21:5
    android:name
        ADDED from com.google.android.gms:play-services-wallet:7.5.0:21:22
uses-permission#android.permission.USE_CREDENTIALS
ADDED from com.google.android.gms:play-services-wallet:7.5.0:22:5
    android:name
        ADDED from com.google.android.gms:play-services-wallet:7.5.0:22:22
meta-data#com.google.android.gms.wallet.api.enabled
 ...<snips more lines away>

2 个答案:

答案 0 :(得分:43)

使用时

 var lists = {
     "google": {
         href: "http://www.google.com",
         src: "http://i.imgur.com/oO1RrsF.png?1"
     },
         "apple": {
         href: "http://i.imgur.com/oO1RrsF.png?1",
         src: "http://i.imgur.com/eHm7Nbg.png?1"
     },
         "facebook": {
         href: "http://www.facebook.com",
         src: "http://i.imgur.com/ovkudjR.png?2"
     },
         "hooli": {
         href: "http://www.hooli.xyz",
         src: "http://i.imgur.com/yfEYkoZ.png?2"
     },
         "piedpiper": {
         href: "http://www.piedpiper.com",
         src: "http://i.imgur.com/Q3IhTeK.jpg?1"
     }

 }

 $.each(lists, function (i, e) {
     $("<a target='_blank' id='anc_" + i + "' href='" + e.href + "'><img class='small' src='" + e.src + "' id='" + i + "' alt='" + i + "'/></a><br>").appendTo("body");
     $("#" + i).mouseenter(function () {
         $("#big").attr("src", $(this).attr("src"));
         $("#big_a").attr("href", $("#anc_" + $(this).attr("id")).attr("href"));
     });
 });

这意味着您正在使用 Google Play服务的每个功能,包括位置服务。如果您只需要特定的API,则应使用selective APIs

如果是广告,您可以单独使用:

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

答案 1 :(得分:17)

如果您的应用功能不需要,您可以排除这些自动添加的权限。

在我的情况下,我使用Google wallet播放服务8.3,其中添加了GET_ACCOUNTSUSE_CREDENTIALS。我们并不要求用户选择谷歌帐户来选择谷歌钱包。

<uses-permission android:name="android.permission.GET_ACCOUNTS" tools:node="remove"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS" tools:node="remove" />
创建完整清单时,

tools:node="remove"可以解决问题。

查看AndroidManifest.xml

处的完整最终/build/intermediates/manifest/full/debug