2012-10-24 36 views
6

Giả sử tôi đã tiếp quản phát triển ứng dụng Android và sếp của tôi hỏi tôi tại sao ứng dụng của chúng tôi yêu cầu quyền nhất định phải được hiển thị cho người dùng mua ứng dụng trên Android Market.Làm cách nào để xác định lý do khiến ứng dụng Android của tôi yêu cầu các quyền nhất định?

Có bất kỳ công cụ hoặc thủ thuật nào tôi có thể sử dụng để xác định mã nào kích hoạt từng quyền, vì vậy tôi có thể tìm ra lý do tại sao ứng dụng của chúng tôi cần các quyền đó? Đặc biệt, tôi quan tâm đến những điều khoản:

  • cuộc gọi điện thoại - Đọc tình trạng điện thoại và bản sắc

  • System Tools - Lấy các ứng dụng đang chạy - Cho phép ứng dụng truy xuất thông tin về nhiệm vụ hiện nay và thời gian gần đây hoạt động, tháng cho phép các ứng dụng độc hại khám phá thông tin cá nhân về các ứng dụng khác.

Ứng dụng là ứng dụng theo dõi GPS và không rõ lý do tại sao cần có sự cho phép này. Bạn cũng có thể hữu ích khi nhận bất kỳ mẹo nào về lý do tại sao quyền này có thể cần thiết, ngay cả khi bạn không thể cho tôi biết cách phân tích trực tiếp mã để tìm hiểu.

Trả lời

0

Câu trả lời cho sếp của bạn là "vì một số tính năng/cuộc gọi/phương thức API mà chúng tôi sử dụng trong ứng dụng yêu cầu calee để giữ các quyền nhất định. Vì lý do bảo mật và đó là cách Android hoạt động". Đối với các quyền được đề cập - bạn phải kiểm tra mã để xem các quyền này có thực sự cần thiết hay không. Read phone status and identity có thể cho biết ứng dụng của bạn cố gắng lấy IMEI hoặc một cái gì đó như thế này để nhận dạng duy nhất thiết bị. Retrieve running applications - không thấy lý do nào cho ứng dụng theo dõi GPS để giữ điều này. Nhưng có thể là bạn sử dụng mã/lib của bên thứ ba sử dụng tính năng này.

+0

Tôi không nghĩ rằng nói ông chủ của mình rằng các ứng dụng Android cần quyền truy cập để * làm công cụ * thực sự trả lời câu hỏi. Luôn có liên quan để người dùng cuối biết tính năng nào yêu cầu quyền, đặc biệt nếu họ không rõ ràng và ông chủ của anh có thể muốn biết lý do những quyền này bắt buộc phải thêm vào mô tả của ứng dụng. –

+0

Tôi sợ bạn không thể trả lời theo cách chi tiết hơn là tôi không thấy mã. –

+2

Tất cả những gì tôi muốn nói là loại bỏ câu hỏi của ông chủ là "Đó là cách Android hoạt động" có thể không phải là những gì được mong đợi. Tôi nghĩ rằng Andrew chỉ là trên Lookout cho một cách để tìm ra nơi mã thực sự sử dụng những điều khoản (mà chỉnh sửa cho câu trả lời của bạn không địa chỉ). –

2

Xóa quyền và xem vị trí ứng dụng không thành công. Câu trả lời sẽ ở đầu ra logcat.

Đó không phải là giải pháp lý tưởng vì bạn có thể không biết mình cần làm gì trong ứng dụng để kích hoạt quyền đó.

Tôi nghi ngờ "Đọc trạng thái và nhận dạng điện thoại" có nghĩa là ứng dụng đang sử dụng IMEI thiết bị hoặc thông tin nhận dạng tương tự để nhận dạng duy nhất thiết bị để đảm bảo ứng dụng chỉ chạy trên thiết bị đã đăng ký. Hoặc nó chỉ có thể được sử dụng như một loại cookie để theo dõi chủ sở hữu. Hãy tìm mã đó. Và loại bỏ nó, bởi vì đó là cách sai lầm để làm điều đó. Nếu bạn cần xác định một thiết bị Android cụ thể, hãy sử dụng ANDROID_ID từ lớp Cài đặt.Secure. http://developer.android.com/reference/android/provider/Settings.Secure.html

Đối với "Truy xuất ứng dụng đang chạy", tôi thấy rằng có phần đáng ngờ. Một cách rất phổ biến để thực hiện theo dõi GPS là khởi chạy một dịch vụ riêng biệt trong quy trình riêng của nó. Bằng cách này, nếu ứng dụng gặp sự cố, dịch vụ sẽ tiếp tục và có thể được đính kèm lại. Trong trường hợp này, có thể ứng dụng đang sử dụng "Truy xuất các ứng dụng đang chạy" để xác định và giết quá trình dịch vụ. Nhưng nếu vậy, đó là một cách vụng về để làm điều đó.

14

Đây là cách tôi sẽ theo dõi những điều này.

Bước 1 - Tìm các điều khoản biểu hiện khai báo trong AndroidManifest.xml của bạn

Về cơ bản tất cả mọi thứ bên trong <uses-permission /> thẻ ví dụ:

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

Bước 2 - Tìm developer.android.com cho các lớp học sử dụng những quyền

Hãy lấy trường hợp của READ_PHONE_STATE, mục tiêu là để tìm những gói yêu cầu sự cho phép này. Một tìm kiếm đơn giản trên cổng dev cho "READ_PHONE_STATE" bắt đầu tìm kiếm của chúng tôi, chúng tôi đang tìm kiếm lớp học ở đây, trong các kết quả top 5 tìm kiếm tôi thấy các loại sau đây:

  • TelephonyManager
  • PhoneStateListener

Nhấp chuột vào các lớp học và nhận được tên gói của họ:

  • android.telephony.TelephonyManager
  • android.telephony.PhoneStateListener

Bước 3 Tìm lớp học trong dự án của bạn nhập khẩu những gói

Một grep đơn giản sẽ làm, hoặc một tổ hợp phím Ctrl-H trong nhật thực, File Search -> Chứa văn bản

Bước 4 luận ra việc nhập khẩu và xem những gì phá vỡ

Đây là những khả năng ứng cử viên cho lý do tại sao sự cho phép bắt buộc. Xác nhận các phương thức được đề cập bằng cách nhìn vào cổng thông tin dev để xác nhận rằng sự cho phép thực sự được yêu cầu bởi phương thức đó.

Cuối cùng, bạn sẽ có thể thông báo cho sếp của mình, READ_PHONE_STATE là bắt buộc vì chúng tôi gọi hàm XYZ cung cấp cho chúng tôi UVW.

+0

Vâng, tôi đã quay lại để nói điều này. Đây là câu trả lời đúng, IMHO. –

1

Với công cụ xây dựng mới nhất, bạn có thể chạy kiểm tra lint sẽ làm nổi bật cho bạn tất cả cuộc gọi phương thức SDK Android yêu cầu quyền.

Xem thông báo tại đây http://android-developers.blogspot.com/2015/07/get-your-hands-on-android-studio-13.html và tài liệu tại đây https://developer.android.com/tools/debugging/annotations.html#permissions.

này được dựa trên các chú thích android và sau một thời gian áp dụng thư viện của bên thứ 3 có thể tích hợp các chú thích cho phép cũng

enter image description here

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