2012-02-29 74 views
12

Tôi đang tạo ứng dụng sẽ được nhóm trên thiết bị Android dưới dạng ứng dụng hệ thống. Nhà sản xuất là cách để cung cấp thiết bị cho chúng tôi, vì vậy trong thời gian chờ đợi, tôi muốn cấp quyền của cấp hệ thống ứng dụng cho trình mô phỏng để tôi có thể làm việc trên tính năng cập nhật tự động sẽ thực hiện cài đặt APK im lặng mà không có bất kỳ tương tác nào từ người dùng. Từ những gì tôi đã đọc, sự hiểu biết của tôi rằng cách duy nhất để có thể thực hiện cài đặt im lặng trên Android là nếu ứng dụng của bạn được ký với cùng một chứng chỉ như hệ điều hành. Vì vậy, làm thế nào tôi có thể mô phỏng này trong giả lập?cấp quyền hệ thống cho ứng dụng trong trình giả lập android

Trả lời

27

Nếu bạn muốn có giấy phépOrSystem, bạn chỉ cần được đặt trên hình ảnh hệ thống; bạn không cần phải ký với bất kỳ chứng chỉ đặc biệt nào. Bạn có thể làm điều này như một one-off (cho đến khi bạn thoát khỏi giả lập) như thế này:

> adb root 
> adb remount 
> adb push /path/to/My.apk /system/app/My.apk 

Một khi bạn đã làm điều đó, bạn có thể sử dụng quá trình bình thường để cài đặt bản cập nhật thêm về các phân vùng dữ liệu ("adb cài đặt -r /path/to/My.apk "đó là những gì các công cụ phát triển làm khi bạn chạy từ Eclipse). Khi cài đặt theo cách này, ứng dụng sẽ giữ lại bất kỳ quyền hạnOrSystem chữ ký nào mà nó đã yêu cầu từ phiên bản gốc trên hình ảnh hệ thống, nhưng không thể có được bất kỳ quyền nào mới như vậy.

Nếu bạn cần quyền chữ ký thuần túy, bạn cần ký ứng dụng của mình với cùng một chứng nhận như bất kỳ điều gì tuyên bố các quyền đó (thường là khung lõi, nhưng hệ thống phương tiện là một chứng chỉ riêng biệt v.v.). Nếu bạn đang yêu cầu quyền chữ ký mà bạn không cần phải cài đặt trên hình ảnh hệ thống, bạn chỉ có thể cài đặt nó như một ứng dụng bình thường và nó vẫn có thể nhận được các điều khoản vì ký.

+0

Tôi sẽ dùng thử! – Ben

+0

Bất cứ ai có thể xác nhận tính năng này hoạt động không? Rất nhiều va chạm, nhưng không có dấu kiểm màu xanh lá cây? – MindWire

+0

Quyền nào bạn đang cố truy xuất.Không có nghi ngờ này hoạt động - những gì signatureOrSystem có nghĩa là một ứng dụng trong/hệ thống/ứng dụng có thể nhận được sự cho phép, và điều này được sử dụng cho một số phần cốt lõi của nền tảng này. – hackbod

2

Theo như tôi có thể nói, bạn cần phải:

  • tải về mã nguồn Android và xây dựng một hình ảnh firmware giả lập.
  • đăng ký ứng dụng của bạn bằng các phím trong cây nguồn Android tại /build/target/product/security/.
  • thêm android:sharedUserId="android.uid.system" vào tệp kê khai của ứng dụng của bạn.
  • chạy ứng dụng của bạn trên một giả lập bằng cách sử dụng hình ảnh được xây dựng trong bước 1.

Lý do cho việc phải xây dựng hình ảnh firmware của riêng bạn là để bạn có thể nhận được vào các phím. Giờ đây, có thể có thể là các phím cho hình ảnh mô phỏng chuẩn ở đâu đó, điều này sẽ giúp bạn tiết kiệm quá trình dài và cực kỳ tẻ nhạt khi xây dựng Android của riêng bạn, nhưng tôi e rằng tôi không biết chúng có thể ở đâu.

Tuyên bố từ chối trách nhiệm: không bao giờ tự mình thử.

+0

đó là những gì tôi đã sợ ... bất kỳ ý tưởng về nơi để tìm kiếm các phím cho các trình mô phỏng hiện tại? – Ben

+0

Tuyệt đối không có. Xây dựng một hình ảnh phần vững không phải là * mà * cứng; một giờ hoặc lâu hơn cho việc tải xuống lớn, và sau đó khoảng bốn cho xây dựng ... và nếu bạn đang vận chuyển trong một nhà sản xuất ROM, bạn có thể muốn nhận được một bản phát hành nguồn từ họ anyway cho thử nghiệm tích hợp. –

+1

bạn có thể thử nếu các phím từ git android hoạt động. Ví dụ: https://github.com/android/platform_build/tree/master/target/product/security Đó là khóa "nền tảng" mà bạn cần sử dụng để ký iirc – zapl

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