2015-01-15 8 views
9

Per la mia app che sto sviluppando con l'ultimo Studio Android Sto usando questo dipendenze all'interno del suo file di Gradle:Android Gradle Manifest Fusione: Override 'usa-permesso' attributo provenienti da una libreria

dependencies { 
    compile 'com.android.support:support-v4:21.0.+' 
    compile 'com.helpshift:android-aar:3.7.1' 
} 

la biblioteca com.helpshift:android-aar:3.7.1 ha bisogno il seguente permesso per una caratteristica che io non uso nella mia app principale:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Come descritto here e here posso ignorare gli attributi dalle dichiarazioni XML attività della libreria importata.

Ma è possibile ignorare anche manifest dichiarazioni XML come il menzionato uses-permission?

Ho già provato qualcosa di simile nel mio manifesto principale, ma non ha funzionato:

<permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    tools:node="remove" 
    tools:selector="com.helpshift"> 
</permission> 

cambiando anche l'elemento <permission>-<uses-permission> non ha aiutato. L'app richiede ancora l'autorizzazione per accedere alla scheda SC.

mio principale AndroidManifest.xml assomiglia a questo ora:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    android:installLocation="auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="com.bmi.rechner" > 

    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     tools:node="remove" 
     tools:selector="com.helpshift"> 
    </uses-permission> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.android.vending.BILLING" /> 

    <application 
     ... 

Aggiornamento: La risposta suggerita da @CommonsWare sta lavorando.

È solo il mio tools:selector="com.helpshift" che non è corretto. Lo lascio fuori perché sono sicuro che non avrò bisogno di quell'autorizzazione in nessun'altra libreria per un po '.

Ha inoltre depositato uno feature request per migliorare il rapporto di fusione manifesto che potrebbe aiutare a trovare il selettore giusto in futuro.

risposta

9

Sarebbe un elemento <uses-permission> che sarebbe remove, non un elemento <permission>.

E nota che la libreria potrebbe bloccarsi se l'app non possiede questa autorizzazione.

+0

Grazie, tuttavia, la modifica dell'elemento su non è stata di aiuto. L'app richiede ancora il permesso di accedere alla scheda SC. Lo sto usando nell'elemento corretto del mio file manifest? – Steffen

+0

@sdeff: Non ho idea se il tuo 'com.helpshift' è giusto per il' selector', poiché non uso questa libreria. Oltre a questo, guarda il rapporto di fusione manifest (dovrebbe essere in 'build/output/apk /' IIRC) e vedere se ti dà qualche indizio. – CommonsWare

+1

Ho appena rimosso 'tools: selector =" com.helpshift "' e ora sembra che funzioni. Dovrebbe essere a posto ora? Btw. la biblioteca ha una chat in-app in cui gli utenti possono allegare screenshot. Ora non funziona più, ma è meglio delle valutazioni a 1 stella degli utenti che pensano che io voglia solo ottenere i loro dati personali. :) – Steffen

Problemi correlati