2014-12-10 8 views
8

Ho appena notato che la mia app ha nuove richieste di autorizzazione che non ho dichiarato esplicitamente nel mio AndroidManifest.xml. Non ho visto questi dichiarati in nessuno dei manifesti nella directory "intermedi" creata da gradle, e l'unica dipendenza che dichiaro senza una versione esplicita è crashlytics (come suggeriscono di fare), es .:autorizzazioni non richieste non dichiarate in Androidmanifest - crashlytics forse?

compilare 'com.crashlytics.android:crashlytics:1.+'

I nuovi permessi si trovano nel pieno manifesta sono:

<android:uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     android:maxSdkVersion="18" /> 
    <android:uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <android:uses-permission 
     android:name="android.permission.READ_EXTERNAL_STORAGE" 
     android:maxSdkVersion="18" /> 

Allora, qual la mia ipotesi è che qualunque sia la versione nuova di crashlytics chiede ora questo ?

risposta

11

Se stai usando Gradle per costruire, è possibile aggiungere quanto segue al AndroidManifest.xml per rimuovere l'autorizzazione:

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> 
+0

Il mio assunto Crashlytics lo stava facendo intenzionalmente non era corretto, per favore vedi la risposta di @ Mike. –

+0

Nel mio caso, il colpevole era in realtà AndroidPlot che non specificava un targetSdk, il che ha portato gli strumenti di compilazione a includere automaticamente l'autorizzazione READ_PHONE_STATE. –

+0

Ho capito lo stesso. Come l'hai rimosso? È l'unico modo per usare gli strumenti: rimuovere nodo? Questo è ciò che mostra la mia unione: 'android: uses-permission # android.permission.WRITE_EXTERNAL_STORAGE IMPLICITO da AndroidManifest.xml: 2: 1 motivo: com.androidplot ha una targetSdkVersion <4 android: uses-permission # android.permission. READ_PHONE_STATE IMPLICITA da AndroidManifest.xml: 2: 1 motivo: com.androidplot ha un targetSdkVersion <4 Android: usa-autorizzazione # android.permission.READ_EXTERNAL_STORAGE IMPLICITE da AndroidManifest.xml: 2: 1 motivo: com.androidplot richiesto WRITE_EXTERNAL_STORAGE ' – Esko

2

C'è un problema all'interno del Gradle Android versione del plugin 1.0.0-rc1 questo potrebbe causare il comportamento: https://code.google.com/p/android/issues/detail?id=81017

Versione 1.0.0 ha una soluzione per questo.

Crashlytics richiede solo l'autorizzazione INTERNET per inviare rapporti di arresto anomalo.

+0

Si noti che la "correzione" si limita a documentare meglio il motivo per cui l'autorizzazione è stata automaticamente aggiunta (in manifest-merger - * - report.txt). Se vuoi forzare l'autorizzazione, vedi la mia risposta qui sotto. –