2015-01-15 5 views
9

Für meine Anwendung kommen, die mich mit dem neuesten Android-Studio bin Entwicklung Ich verwende diese Abhängigkeiten innerhalb es gradle Datei ist:Android Gradle Manifest Fusion: Aufschalten ‚verwendet-Erlaubnis‘ Attribut aus einer Bibliothek

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

die com.helpshift:android-aar:3.7.1 Bibliothek muss die folgende Berechtigung für eine Funktion, die ich in meinem Haupt-App nicht verwenden:

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

Wie beschrieben here und here I Attribute außer Kraft setzen kann aus der Aktivität der importierten Bibliothek XML-Deklarationen.

Aber kann ich auch manifest XML-Deklarationen wie die genannten uses-permission überschreiben?

Ich habe bereits versucht, so etwas wie dies in meinem Haupt manifestieren, aber es hat nicht funktioniert:

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

Auch das <permission> Element <uses-permission> Veränderung hat nicht geholfen. Die App fragt immer noch um Erlaubnis, auf die SC-Karte zuzugreifen.

Mein Haupt AndroidManifest.xml sieht wie folgt nun:

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

aktualisieren: Die vorgeschlagene Antwort von @CommonsWare arbeitet.

Es ist nur meine tools:selector="com.helpshift", die nicht korrekt ist. Ich lasse es weg, weil ich sicher bin, dass ich diese Erlaubnis in anderen Bibliotheken für eine Weile nicht brauchen werde.

Er hat auch einen feature request eingereicht, um den Manifest Merger Report zu verbessern, der helfen könnte, in Zukunft den richtigen Selektor zu finden.

Antwort

9

Es wäre ein <uses-permission> Element, das Sie würden remove, kein <permission> Element.

Und beachten Sie, dass die Bibliothek abstürzen kann, wenn Ihre App diese Berechtigung nicht besitzt.

+0

Danke, aber das Element zu zu ändern hat nicht geholfen. Die App bittet immer noch um Erlaubnis, auf die SC-Karte zuzugreifen. Verwende ich es im richtigen Element meiner Manifest-Datei? – Steffen

+0

@sdeff: Ich habe keine Ahnung, ob dein 'com.helpshift' für den' Selector' geeignet ist, da ich diese Bibliothek nicht verwende. Schauen Sie sich darüber hinaus den Manifest Merger Report an (sollte in 'build/output/apk /' IIRC) sein und sehen Sie, ob er Ihnen Hinweise gibt. – CommonsWare

+1

Ich habe 'tools: selector =" com.helpshift "einfach komplett entfernt und jetzt scheint es zu funktionieren. Das sollte jetzt in Ordnung sein? Übrigens. Die Bibliothek verfügt über einen In-App-Chat, in dem Benutzer Screenshots anhängen können. Das funktioniert jetzt nicht mehr, aber es ist besser als 1-Sterne-Bewertungen von Nutzern, die denken, ich möchte nur ihre persönlichen Daten bekommen. :) – Steffen

Verwandte Themen