2013-02-07 125 views
8

Tôi có một ứng dụng hệ thống mà OEM cài đặt với hình ảnh hệ thống, nhưng được tôi ký. Nếu tôi tải lên APK đã cập nhật lên thị trường, ứng dụng thị trường có tự động cài đặt bản cập nhật này tự động không?Cập nhật ứng dụng hệ thống Android, có/không có chữ ký nền tảng

Nếu ứng dụng hệ thống của tôi được ký thay bằng chữ ký nền tảng thay vì của tôi, điều này có nghĩa là mọi cập nhật cũng phải được ký bằng chữ ký nền tảng, đúng không? Một gói ứng dụng nền tảng có thể được cập nhật từ thị trường không?

Trả lời

6

Cho phép trước hết làm rõ sự khác biệt giữa tất cả các loại ứng dụng.

Ứng dụng hệ thống là những ứng dụng nằm trong thư mục /system/app. Các ứng dụng này có một bộ cờ ApplicationInfo.FLAG_SYSTEM. Trong một thiết bị thông thường, phân vùng /system được gắn kết để truy cập chỉ đọc. Do đó, không thể cập nhật ứng dụng hệ thống vì ứng dụng này nằm ở vị trí chỉ đọc. Các ứng dụng này chỉ có thể được cập nhật như một phần của bản cập nhật OTA.

Ứng dụng thông thường nằm trên phân vùng/dữ liệu đọc ghi. Do đó, các ứng dụng này có thể được cập nhật bởi một hệ thống.

Bây giờ, hãy nói về chữ ký. Một số thành phần Android được bảo vệ với quyền của loại chữ ký. Điều này có nghĩa rằng nếu bạn muốn có quyền truy cập vào một thành phần được bảo vệ bằng loại quyền này, ứng dụng của bạn phải được ký bằng cùng một chứng chỉ như một thành phần được bảo vệ. Điều này đúng không chỉ cho hệ thống Android, mà còn cho các ứng dụng Android, tức là trong ứng dụng của bạn, bạn có thể có một thành phần được bảo vệ bằng quyền chữ ký, do đó, chỉ những ứng dụng có cùng chữ ký mới có quyền truy cập vào thành phần này.

Luận án thứ ba mà chúng tôi yêu cầu trả lời câu hỏi của bạn là Android cấm cài đặt các gói có cùng tên gói nhưng chữ ký khác nhau.

Như vậy,

Tôi có một ứng dụng hệ thống mà các OEM cài đặt với hệ thống hình ảnh, nhưng được chữ ký của tôi. Nếu tôi tải APK được cập nhật lên thị trường, ứng dụng thị trường có tự động cài đặt bản cập nhật này tự động không?

Nếu ứng dụng hệ thống của tôi được thay bằng chữ ký nền tảng thay vì của tôi, điều này có nghĩa là mọi cập nhật cũng phải được ký bằng chữ ký nền tảng , đúng không? APK nền tảng có thể được cập nhật có được cập nhật từ thị trường không?

Câu trả lời là không. Mặc dù các ứng dụng được đặt trong/system/app có thể được ký với một chứng chỉ khác với nền tảng, nhưng bản cập nhật của các ứng dụng này chỉ có thể được cập nhật hệ thống.

Để giải quyết vấn đề của bạn, bạn có thể thay đổi tên gói ứng dụng của bạn, ký tên với ứng dụng của bạn (nếu ứng dụng không yêu cầu quyền truy cập vào các thành phần Android được bảo vệ) hoặc nền tảng (nếu ứng dụng có quyền truy cập vào các thành phần được bảo vệ và nếu bạn có quyền truy cập vào chữ ký này) và đưa ứng dụng này vào thị trường. Sau đó, bạn sẽ nhận được các bản cập nhật của ứng dụng của bạn thông qua thị trường.

+2

câu trả lời khác chỉ ra rằng ứng dụng hệ thống có thể được cập nhật, ví dụ http: // stackoverflow .com/questions/7825045/can-a-system-app-be-updated.Gói ứng dụng được cập nhật được cài đặt vào/data/app và hệ thống sử dụng phiên bản cập nhật đó thay thế. Người dùng có khả năng có thể gỡ cài đặt phiên bản cập nhật này, chứ không phải phiên bản gốc trong/system/app. –

+0

Tôi không biết về khả năng này. Tuy nhiên, ứng dụng sẽ được cài đặt vào thư mục/data/app và điều này không mâu thuẫn với câu trả lời của tôi. Thư mục/system chỉ có thể được cập nhật với bản cập nhật hệ thống. Trong mọi trường hợp, cảm ơn bạn đã làm rõ câu hỏi này! – Yury

+2

Ứng dụng Google được cập nhật ngay cả khi ứng dụng trong thư mục ứng dụng hệ thống – amalBit

0

Hệ thống sẽ không đối xử với một gói ứng dụng trong/data/app như một bản cập nhật trừ khi signatur phù hợp với một trong/system/ap