Warum werden Berechtigungen automatisch zu meinem AndroidManifest hinzugefügt, wenn Sie die Google Play Services-Bibliothek einschließen?

Ich habe festgestellt, dass die folgenden Berechtigungen automatisch hinzugefügt wurden, wenn ich Folgendes in meiner build.gradle-Datei verwende

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

Dies ist bei den früheren Versionen der Play-Services nicht aufgetreten. Hat jemand eine Lösung, um diese unerwünschten Berechtigungen zu entfernen?

Ich verwende nur die Anzeigenfunktion (INTERNET und ACCESSNETWORK_STATE). Ich brauchte die Berechtigungen LOCATION und USE_CREDENTIALS nicht. Wie entfernen Sie diese unerwünschten Berechtigungen?

Ich habe festgestellt, dass die Datei ‘manifest-merger-xxx-debug-report.txt’ folgendes enthält

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

Wenn Sie verwenden

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

Dies bedeutet, dass Sie alle functionen von Google Play-Diensten nutzen, einschließlich der Standortdienste. Wenn Sie nur eine bestimmte API benötigen, sollten Sie die selektiven APIs verwenden .

Im Fall von Anzeigen können Sie ausschließlich Folgendes verwenden:

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

Sie können diese automatisch hinzugefügten Berechtigungen ausschließen, wenn Ihre App-function dies nicht erfordert.

In meinem Fall verwende ich den Google wallet Play Service 8.3, der GET_ACCOUNTS und USE_CREDENTIALS . Wir haben den Nutzer nicht dazu aufgefordert, das Google-Konto für die Auswahl von Google Wallet auszuwählen.

   

tools:node="remove" macht den Trick beim Erstellen des vollständigen Manifests.

Sehen Sie sich das vollständige Finale AndroidManifest.xml unter /build/intermediates/manifest/full/debug