为什么在包含 Google Play 服务库时权限会自动添加到我的 AndroidManifest
Why are permissions being automatically added to my AndroidManifest when including Google Play Services library
我注意到当我在 build.gradle 文件中使用以下内容时,会自动添加以下权限
compile 'com.google.android.gms:play-services:7.5.0'
早期版本的播放服务不会出现这种情况。
有没有人有解决方案来删除这些不需要的权限?
我只使用广告功能(互联网和 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>
当你使用
compile 'com.google.android.gms:play-services:7.5.0'
这意味着您正在使用 Google Play 服务的每个 功能,包括定位服务。如果你只需要一个特定的 API,你应该使用 selective APIs.
如果是广告,您可以单独使用:
compile 'com.google.android.gms:play-services-ads:7.5.0'
如果您的应用功能不需要,您可以排除那些自动添加的权限。
在我的例子中,我使用的是 Google wallet
播放服务 8.3,它添加了 GET_ACCOUNTS
和 USE_CREDENTIALS
。我们不要求用户选择 google 帐户来选择 google 钱包。
<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"
在创建完整清单时起到了作用。
在 /build/intermediates/manifest/full/debug
查看完整决赛 AndroidManifest.xml
我注意到当我在 build.gradle 文件中使用以下内容时,会自动添加以下权限
compile 'com.google.android.gms:play-services:7.5.0'
早期版本的播放服务不会出现这种情况。 有没有人有解决方案来删除这些不需要的权限?
我只使用广告功能(互联网和 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>
当你使用
compile 'com.google.android.gms:play-services:7.5.0'
这意味着您正在使用 Google Play 服务的每个 功能,包括定位服务。如果你只需要一个特定的 API,你应该使用 selective APIs.
如果是广告,您可以单独使用:
compile 'com.google.android.gms:play-services-ads:7.5.0'
如果您的应用功能不需要,您可以排除那些自动添加的权限。
在我的例子中,我使用的是 Google wallet
播放服务 8.3,它添加了 GET_ACCOUNTS
和 USE_CREDENTIALS
。我们不要求用户选择 google 帐户来选择 google 钱包。
<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"
在创建完整清单时起到了作用。
在 /build/intermediates/manifest/full/debug
AndroidManifest.xml