2012-07-02 42 views
5

Tôi đang làm việc trên một ứng dụng Android với một cơ sở mã nguồn rất lớn. Tôi không thích ứng dụng của mình không yêu cầu một vài quyền và tôi bắt đầu nghi ngờ rằng có một vài điều không được chấp nhận và không còn cần thiết nữa.Cách xác định quyền không dùng nữa?

Câu hỏi đặt ra là - Cách xác định xem điều đó có thực sự không được chấp nhận hay không?

tôi đã cố gắng để loại bỏ một sự cho phép nghi ngờ tắt và biên dịch lại nó (sử dụng Eclipse Juno), và hy vọng được biên soạn để đánh dấu nó như là một lỗi hoặc một cảnh báo, nhưng nó thì không.

Cũng cố gắng chạy Lint một cách rõ ràng trên mã và cũng không phát hiện được mã này.

Ứng dụng được biên dịch và chạy trên thiết bị và tôi đoán rằng sẽ ném ngoại lệ thời gian chạy bằng AccessDenied khi API có liên quan sẽ được gọi ở một số luồng mã.

Có cách nào hiệu quả để phát hiện API đó, mà không cần duyệt tất cả mã nguồn hoặc chạy ứng dụng trong nhiều trường hợp không?

Cảm ơn!

Trả lời

0

Thật không may, câu trả lời ngắn gọn là không. Không có cách tự động nào để phát hiện nó. Các phương pháp chỉ cố gắng và đúng là loại bỏ từng quyền và kiểm tra, hoặc bước qua mã của bạn để kiểm tra.

Nên có, mặc dù. Tôi nghi ngờ sẽ không khó để viết một kịch bản đọc mã dự án của bạn và xác định các quyền cần thiết. Phần khó nhất sẽ cập nhật các thay đổi về API.

1

Chạy mã của bạn bằng -Djava.security.debug = truy cập, lỗi. Điều đó sẽ cho bạn thấy tất cả các quyền thực sự được sử dụng.

+0

Âm thanh thú vị. Nhưng thực sự làm thế nào để tôi làm điều đó trên thiết bị của tôi? để đưa lá cờ đó cho ai? khi cài đặt apk? – Dekel

+0

Đây có phải là giải pháp Maven không? – TacB0sS

0

Tôi cho rằng bạn đang thực hiện điều này theo hướng sai.

Thay vì hỏi bạn có thể xóa quyền nào, hãy duyệt qua danh sách và tạo giải thích cho lý do tại sao mỗi quyền là cần thiết và tính năng nào sẽ bị tắt nếu quyền đó bị xóa.

Nếu bạn hiểu sự cho phép của mình, sẽ không khó để tạo các truy vấn tìm kiếm để tìm các vị trí có khả năng được sử dụng trong ít nhất mã Java. Nhưng rất nhiều biểu hiện (và thậm chí là câu trả lời SO không thường xuyên) có các quyền không cần thiết; nó không phải là không phổ biến để xem yêu cầu cho phép mà nền tảng thậm chí sẽ không cấp cho các ứng dụng không phải hệ thống.

0

Tôi không biết nó hoạt động tốt như thế nào, nhưng có vẻ như một số nhà nghiên cứu tại UC Berkeley đang làm việc trên một dự án để quét ứng dụng Android và hiển thị những quyền họ sử dụng. Thông tin thêm tại http://www.android-permissions.org/

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