Почему автоматически добавляются разрешения на мой 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