2015-01-17 3 views
8

ich folgendes Problem im Moment gegenüber:deaktivieren Abhängigkeit Berechtigungen

I App entwickelt habe 'A', die 1-Berechtigungen verwendet, 2, 3 und verwendet eine dritte 'B' Party-Bibliothek als Abhängigkeit (hinzugefügt mit Maven & Gradle).

Bibliothek ‚B‘ verwendet die Berechtigungen 4 und 5. Nun, wenn die App Bau, die Manifest Fusion fügt die Berechtigungen 4 und 5 zu app ‚A‘.

Wie kann ich dies verhindern und haben nur die Berechtigungen 1, 2 und 3 in der letzten manifestieren?

Meine erste Vermutung wäre mit einer der offensichtlichen Fusion Marker sein wie hier zu sehen: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Markers

Antwort

13

Sie Selector

Jede Werkzeuge verwenden müssen: Knoten oder Werkzeuge: attr Erklärung kann durch eine verstärkt werden Werkzeuge: Selektor Attribut, das auf Kontextinformation ist, ob nicht das Verschmelzen Strategie sollte auf die aktuelle untere Priorität XML-Beschreibung angewandt werden. Zum Beispiel ist dies sinnvoll, wenn nur eine Erlaubnis zu entfernen, wenn für eine bestimmte Bibliothek kommen, wie in jede Bibliothek Gegensatz:

<permission 
     android:name="permissionOne" 
     tools:node="remove" 
     tools:selector="com.example.lib1"> 

Es wäre nach Ihren ursprünglichen Anforderungen

<!--suppress AndroidDomInspection --> 
<uses-permission 
    tools:node="removeAll"/> 

nächst sein, aber Beachten Sie, dass alle anderen <uses-permissions/> entfernt werden.

+0

Wie kann ich die resultierende Warnung unterdrücken, wenn Ihr zweites Beispiel mit? "Name Attribut sollte definiert werden" – throwaway

+0

@throwaway Verwenden Android Tools Namespace 'xmlns: Werkzeuge = "http://schemas.android.com/tools"', fügen Sie es in '' gio

+0

Naw, ich sprach darüber, dass Der '' Knoten erfordert ein 'andorid: name' Attribut (nach lint), das ist was ich meine: https://i.imgur.com/V5YZp11.png das Projekt baut immer noch mit diesem Fehler, aber es ist sehr verwirrend – throwaway

0

Wie Sie wissen alle Bibliotheken haben eine Manifest-Datei und miteinander verschmelzen. Sie können eine Berechtigung entfernen, die durch diese in einer Ihrer Bibliotheken ist:

tools:node="remove" 

für ein Beispiel zu entfernen Standort Erlaubnis:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />