让我们首先澄清所有类型的应用程序之间的差异.
系统应用程序是位于/ system / app文件夹中的应用程序.这些应用程序具有一个标志ApplicationInfo.FLAG_SYSTEM集.在普通设备中,安装分区/系统以进行只读访问.因此,系统应用程序无法更新,因为它位于只读位置.这些应用程序只能作为OTA更新的一部分进行更新.
普通应用程序位于/ write分区,即读写.因此,这些应用程序可以由系统更新.
现在让我们谈谈签名.某些Android组件受签名类型的权限保护.这意味着,如果要访问受此类权限保护的组件,则必须使用与受保护组件相同的证书对应用程序进行签名.这不仅适用于Android系统,也适用于Android应用程序,即在您的应用程序中,您可以拥有受签名权限保护的组件,因此,只有具有相同签名的应用程序才能访问此组件.
我们要回答你问题的第三个问题是Android禁止安装具有相同包名但签名不同的包.
从而,
I have a system app that the OEM installs with the system image, but
is signed by me. If I upload an updated apk to the market, will the
market app silently install this update automatically?
If my system app is instead signed with the platform signature instead
of mine, this means any updates also have to be signed with the
platform signature, correct? Can a platform-signed apk be updated from
the market?
答案是不.虽然位于/ system / app中的应用程序可以使用不同于平台的证书进行签名,但只有系统更新才能更新这些应用程序.
要解决您的问题,您可以更改应用程序的软件包名称,使用您的应用程序进行签名(如果应用程序不需要访问受保护的Android组件)或平台(如果应用程序应该可以访问受保护的组件,并且您有权访问这个签名)并将此应用程序推向市场.然后,您将通过市场收到应用程序的更新.