web-dev-qa-db-ja.com

Google Play Servicesライブラリを含めると、AndroidManifestに権限が自動的に追加されるのはなぜですか

Build.gradleファイルで以下を使用すると、次の権限が自動的に追加されることに気付きました

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

これは、以前のバージョンのplay-servicesでは発生しませんでした。誰かがこれらの不要な権限を削除する解決策を持っていますか?

私は、ads関数(INTERNETおよび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>
29
Angel Koh

使うとき

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

これは、位置情報サービスを含むGoogle Play開発者サービスのevery機能を使用していることを意味します。特定のAPIのみが必要な場合は、 selective APIs を使用する必要があります。

広告の場合は、次のもののみを使用できます。

compile 'com.google.Android.gms:play-services-ads:7.5.0'
43
ianhanniballake

アプリの機能で必要ない場合は、これらの自動追加された権限を除外できます。

私の場合、Google walletGET_ACCOUNTSを追加するUSE_CREDENTIALS再生サービス8.3を使用しています。ユーザーが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をご覧ください

17
Libin