2015-01-17 15 views
8

Tôi đang gặp vấn đề sau tại thời điểm này:Tắt quyền phụ thuộc

Tôi đã phát triển ứng dụng 'A' sử dụng quyền 1, 2, 3 và sử dụng thư viện bên thứ ba 'B' làm phụ thuộc (được thêm vào sử dụng maven & gradle).

Thư viện 'B' sử dụng quyền 4 và 5. Bây giờ khi tạo ứng dụng, trình kết hợp tệp kê khai thêm quyền 4 và 5 vào ứng dụng 'A'.

Làm cách nào để ngăn chặn điều này và chỉ có các quyền 1, 2 và 3 trong tệp kê khai cuối cùng?

đoán đầu tiên của tôi sẽ được sử dụng một trong những dấu hiệu sáp nhập manifest như đã thấy ở đây: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Markers

Trả lời

13

Bạn cần phải sử dụng Selector

Mỗi công cụ: nút hoặc các công cụ: attr khai có thể được tăng cường bởi một Công cụ : thuộc tính bộ chọn là thông tin theo ngữ cảnh về việc liệu có hay không không phải chiến lược hợp nhất sẽ được áp dụng cho mô tả XML ưu tiên thấp hơn hiện tại. Ví dụ, điều này rất hữu ích khi loại bỏ một phép chỉ khi đến với một thư viện cụ thể như trái ngược với bất kỳ thư viện:

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

Nó sẽ là tiếp theo theo yêu cầu ban đầu của bạn

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

nhưng hãy nhớ rằng tất cả các <uses-permissions/> khác sẽ bị xóa.

+0

Làm thế nào tôi có thể ngăn chặn các cảnh báo kết quả khi sử dụng ví dụ thứ 2 của bạn? "tên thuộc tính phải được xác định" – throwaway

+0

@throwaway Sử dụng không gian tên công cụ Android 'xmlns: tools =" http://schemas.android.com/tools "', thêm nó vào '' – gio

+0

Naw, tôi đã nói về điều đó, rằng nút '' yêu cầu thuộc tính 'andorid: name' (theo lint), đó là ý của tôi: https://i.imgur.com/V5YZp11.png dự án vẫn xây dựng với lỗi đó nhưng rất khó hiểu – throwaway

0

Như bạn đã biết tất cả các thư viện đều có tệp kê khai và sẽ hợp nhất với nhau. bạn có thể loại bỏ một quyền có trong một trong các thư viện của bạn bằng cách này:

tools:node="remove" 

cho một ví dụ loại bỏ sự cho phép vị trí:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" /> 
Các vấn đề liên quan