2012-02-28 36 views
14

Tôi đang làm việc trên một giải pháp cập nhật ứng dụng tự động cho các thiết bị (LG p509 - Optimus 1) mà chúng tôi triển khai cho khách hàng của mình. Chúng tôi có quyền kiểm soát các thiết bị này và hiện đang cài đặt một hạt nhân tùy chỉnh trên chúng (nhưng không phải là một ROM tùy chỉnh đầy đủ). Vì chúng tôi đang cố gắng tự động cập nhật ứng dụng của mình trên thiết bị, chúng tôi cần hệ thống được ký bằng khóa mà chúng tôi kiểm soát để chúng tôi có thể ký các ứng dụng của mình bằng cùng một khóa (để nhận được quyền INSTALL_PACKAGES).
Tôi đã gặp phải một số sự cố khi chạy AOSP trên thiết bị (sử dụng nguồn phát hành của LG cho thiết bị) và đang cố lùi lại một bước và đánh giá các tùy chọn của chúng tôi. Tôi có một vài câu hỏi:Từ chức hệ thống.img trên thiết bị

  1. Bạn có thể kéo hệ thống ra khỏi điện thoại và từ chức không? Nếu vậy, đâu là gói ứng dụng hệ thống? Tôi poked thông qua các nguồn PackageManager và nó sử dụng một systempackage (dường như được gọi là "android") để so sánh các ứng dụng với để xem nếu họ được phép có quyền hệ thống.
  2. Có ai ở đây tạo một ROM tùy chỉnh cho thiết bị có thể cung cấp một số lời khuyên về cách chỉ nhận chữ ký của chúng tôi là chữ ký hệ thống không?

Mọi thông tin chi tiết sẽ được đánh giá cao.

Trả lời

14

Ok, vì vậy chúng tôi đã tìm ra. Tôi sẽ không đi vào chi tiết đầy đủ (quá nhiều văn bản), nhưng đây là ý chính cơ bản cho bất kỳ ai tình cờ gặp phải điều này:

Nếu bạn muốn thay đổi chìa khóa mà hệ thống đã ký kết, bạn cần thực hiện các bước sau:

  • Extract /system/ dir từ điện thoại chạy
  • Kiểm tra .apk file (từ /system/app/system/framework) để tìm ra những người được ký kết thúc bằng phím tương tự như framework-res.apk. Tôi đã sử dụng phiên bản đã sửa đổi của tập lệnh linked here để tìm ra APK nào cần ký.
  • Nếu APK trong số /system/app chia sẻ khóa ký với framework-res.apk là không phù hợp, bạn cần to de-odex them.
  • từ chức các APK và framework-res.apk và đóng gói chúng trong một update.zip (google cách thực hiện điều đó).

Trên điện thoại cụ thể của tôi, tôi đã phải từ chức cả /system/framework/framework-res.apk/system/framework/lge-res.apk từ /system/framework và cũng phải de-Odex và ký 20 .apks từ thư mục /system/app để có được tất cả mọi thứ chạy trơn tru.

+0

Trong liên kết bạn đã chia sẻ đề cập rằng chúng tôi cần zipalign khi chúng tôi ký các apks có liên quan (trong hệ thống/ứng dụng) và framework-res.apk.But ở đây bạn đề cập rằng chúng tôi cần update.zip it.Are cả hai đều giống nhau không? Bạn có thể vui lòng giải thích những gì cần phải được thực hiện một khi các apks được ký kết? – Basher51

+0

Tôi đã ký tất cả các apks.Now có liên quan của mình, vì tôi đã bỏ một số apks (trước khi tiến trình ký), vì thế tôi không nên đánh giá chúng trước khi tôi sao chép chúng trở lại thiết bị? Tôi đang mắc kẹt về cách làm điều này. Bạn có thể vui lòng hỗ trợ .. – Basher51

+0

Zipaligning khác với update.zip. Để biết thêm thông tin về cách zipalign, hãy xem tài liệu của google (http://developer.android.com/tools/help/zipalign.html). Sau khi bạn zipalign, bạn có thể tạo update.zip tương tự như cách chúng mô tả tại http://forum.androidgadget.co.uk/showthread.php?tid=338 – natez0r

8

"Gói ứng dụng hệ thống" là /system/framework/framework.jar. Tôi chưa bao giờ cố gắng ký lại hình ảnh hệ thống nhưng tôi đã viết mã là một phần của hình ảnh hệ thống (không nằm trong một dự án apk bình thường) và nó đã trở thành một phần của cái bình này. Có thêm các lọ trong thư mục này có thể cần phải được ký lại.

Chữ ký được tạo ngẫu nhiên và được đặt trong hai tệp trong môi trường xây dựng của bạn, build/target/product/security/platform.pk8build/target/product/security/platform.x509.pem. Tôi không biết làm thế nào để trích xuất chúng từ một cửa hàng khóa bình thường, tuy nhiên tôi đã có thể sao chép chúng từ một bản dựng phần mềm khác để đảm bảo rằng cả hai hình ảnh đều có cùng khóa nền tảng. Ngoài ra, tôi đã có thể thay đổi chữ ký của APK bằng lệnh này: java -jar signapk.jar platform.x509.pem platform.pk8 Old.apk New.apk. Bạn sẽ tìm thấy signapk.jar trong bản dựng của mình, tại out/host/linux-x86/framework/signapk.jar

+0

Dường như framework-res.apk là neo chữ ký hệ thống mà tôi đang tìm kiếm.Vẫn còn phiền phức với việc xóa tất cả các tập tin thích hợp, nhưng đó là một sự khởi đầu. cảm ơn! – natez0r

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