2015-02-02 15 views
5

Tôi đã viết một số mã thử nghiệm để xác minh loại và phạm vi quyền mà ứng dụng của chúng tôi yêu cầu và tôi nhận thấy hai mức bảo vệ mới đã được thêm gần đây vào Android.Cờ bảo vệ "appop" và "development" được sử dụng để làm gì?

Theo official Android docs, yếu tố <permission> trong AndroidManifest.xml chấp nhận một trong bốn giá trị sau:

android: protectionLevel = [ "bình thường" | "nguy hiểm" | "chữ ký" | "signatureOrSystem"]

nhưng tôi nhận thấy rằng lớp PermissionInfo (xem here) có cờ cho tổng cộng sáu cấp độ bảo vệ. Dường như hai cấp độ này đã được thêm vào trong SDK 16 và 21, tương ứng, nhưng họ dường như không được ghi chép lại:

int PROTECTION_FLAG_DEVELOPMENT = 0x20 
int PROTECTION_FLAG_APPOP  = 0x40 

tôi đã tự hỏi những gì khác nhau giữa các mức bảo vệ và những người mà có thể được định nghĩa trong tệp kê khai và nếu/khi nào chúng nên được sử dụng.

Trả lời

4

Việc cho phép appop là gì, nhưng một sự nhớ lại của công cụ Ops App mà Google giới thiệu trở lại trong Android 4.3 và đã bị xóa từ bao giờ . Về lý thuyết, quyền với cờ appop có thể được người dùng chuyển sang trong khi thử nghiệm để xác minh cách ứng dụng sẽ hoạt động khi một số tính năng phần mềm hoặc phần cứng được bật hoặc tắt.

Đây là mô tả thực tế của App Ops do các kỹ sư của Google:

Ví dụ, nó được sử dụng ngay bây giờ để kiểm soát thông báo cho mỗi ứng dụng, cho việc theo dõi khi vị trí được truy cập ở vị trí mới UI, đối với một số khía cạnh của sự kiểm soát ứng dụng SMS hiện mới, vv

Dưới đây là một liên kết đến toàn bộ bài: https://plus.google.com/+DannyHolyoake/posts/FkfBxA5i3iG

3

Các development cờ (0x20):

cờ bổ sung từ loại giấy phép cơ sở: quyền này có thể cũng (tùy chọn) được cấp cho các ứng dụng phát triển.

appop cờ (0x40):

cờ bổ sung từ loại giấy phép cơ sở: quyền này là chặt chẽ kết hợp với một op ứng dụng để kiểm soát truy cập.

Đây là tài liệu tham khảo: http://developer.android.com/reference/android/R.attr.html

Các development phép, hoặc một cái gì đó tương tự, thường được sử dụng trong tình huống mà điều khoản nhất định được yêu cầu cho mục đích phát triển/gỡ lỗi nhưng không nhằm mục đích phát hành. Ví dụ, giả sử bạn đang tạo một ứng dụng mới. Lúc đầu, bạn triển khai phiên bản ứng viên phát hành của ứng dụng cho một nhóm người/người kiểm tra được chọn. Bạn có thể sử dụng mức cấp phép development để bật các tính năng có thể hữu ích cho thử nghiệm ban đầu và thu thập kết quả, chẳng hạn như GPS để xem vị trí nhóm thử nghiệm của bạn và khả năng lưu trữ/mạng để lưu trữ và nhật ký email để phân tích. Khi bạn đã sẵn sàng cho một bản phát hành chung, bạn xóa quyền này, vì việc thu thập dữ liệu đó không cần thiết nữa hoặc, nhiều khả năng, không thực sự có thể cho một nhóm người lớn hơn (tức là mối quan tâm về quyền riêng tư, v.v.).

Theo như sự cho phép appop đi, tôi không hoàn toàn chắc chắn ...

+0

Cảm ơn Willis! Bất kỳ ý tưởng nào về ý nghĩa của chúng với "các ứng dụng phát triển" hoặc "một ứng dụng op để kiểm soát truy cập"? –

+0

Đã thêm một số thông tin ... – Willis

1

GRANT_RUNTIME_PERMISSIONS được cấp cho shell ứng dụng. Nó cho phép người dùng trình bao cấp quyền phát triển trong thời gian chạy. Việc này được thực hiện với các lệnh pm grantpm revoke.

Bạn có thể kiểm tra frameworks/base/core/res/AndroidManifest.xml để xem các quyền nào thường chỉ được cấp cho chữ ký hoặc ứng dụng hệ thống có thể được cấp cho các ứng dụng thông thường bằng trình bao.

Các vấn đề liên quan