27

ho notato che le seguenti autorizzazioni sono stati aggiunti automaticamente quando uso il seguente nel mio file build.gradlePerché i permessi di essere automaticamente aggiunti al mio AndroidManifest quando tra cui Google Play Servizi

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

Questo non si è verificato con le versioni precedenti dei servizi di gioco. qualcuno ha una soluzione per rimuovere queste autorizzazioni indesiderate?

Sto solo utilizzando la funzione annunci (INTERNET e ACCESSNETWORK_STATE). Non ho bisogno delle autorizzazioni LOCATION e USE_CREDENTIALS. Come rimuovi queste autorizzazioni indesiderate?

ho notato che il file 'manifest-fusione-xxx-debug-report.txt' contiene le seguenti

...<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> 

risposta

43

Quando si utilizza

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

Questo implica che si sta utilizzando ogni funzione di Google Play Services, inclusi i servizi di localizzazione. Se hai solo bisogno di una particolare API, dovresti utilizzare lo selective APIs.

Nel caso di annunci, è possibile utilizzare esclusivamente:

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

ahhh. quello lo ha riparato. è strano che la guida di avvio rapido ci chieda di utilizzare tutti i servizi invece del solo pacchetto di annunci. https://developers.google.com/admob/android/quick-start –

+1

@AngelKoh - Ho presentato un bug al team di documentazione di Google per ottenere la guida di avvio rapido aggiornata. Grazie per la segnalazione! – ianhanniballake

+0

@ianhanniballake Secondo questo post del blog (http://googleadsdeveloper.blogspot.com/2014/12/announcing-v65-of-google-mobile-ads-sdk.html), c'è un avvertimento che questo metodo non funziona se si inizializzano gli annunci banner da XML –

15

È possibile escludere quelle auto permessi aggiunto se la vostra funzione di applicazione non richiede.

Nel mio caso sto usando il servizio di riproduzione Google wallet 8.3 che aggiunge GET_ACCOUNTS e USE_CREDENTIALS. Non è necessario che l'utente scelga l'account Google per la selezione di Google Wallet.

<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" fa il trucco quando si crea il pieno manifesto.

sguardo al finale AndroidManifest.xml completa al /build/intermediates/manifest/full/debug

+0

Questo era più rilevante per me dal momento che, a partire da Play Services 8.3, la dipendenza 'play-services-ads' sta portando un permesso' WAKE_LOCK' dentro. –