Почему автоматически добавляются разрешения на мой AndroidManifest при включении библиотеки Google Play Services

Я заметил, что следующие разрешения были автоматически добавлены, когда я использую следующее в файле 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>

Ответы

Ответ 1

Когда вы используете

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

Это означает, что вы используете все функции Служб Google Play, включая службы определения местоположения. Если вам нужен только определенный API, вы должны использовать селективные API.

В случае рекламы вы можете использовать исключительно:

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

Ответ 2

Вы можете исключить эти автоматически добавленные разрешения, если ваша функция приложения не требуется.

В моем случае я использую Google wallet play service 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" делает трюк при создании полного манифеста.

Посмотрите полный финал AndroidManifest.xml на /build/intermediates/manifest/full/debug