我有一个系统应用程序,OEM安装系统映像,但由我签名。如果我将更新的apk上传到市场,市场应用程序会自动安装此更新吗?
如果我的系统应用程序使用平台签名而不是我的签名,这意味着任何更新也必须使用平台签名进行签名,对吗?可以从市场更新平台签名的apk吗?
答案 0 :(得分:6)
首先让我们澄清所有类型的应用程序之间的区别。
系统应用程序是位于/system/app
文件夹中的应用程序。这些应用程序设置了标志ApplicationInfo.FLAG_SYSTEM
。在普通设备中,安装分区/system
以进行只读访问。因此,系统应用程序无法更新,因为它位于只读位置。这些应用程序只能作为OTA更新的一部分进行更新。
普通应用程序位于/ write分区,是可读写的。因此,这些应用程序可以由系统更新。
现在让我们谈谈签名。某些Android组件受签名类型的权限保护。这意味着,如果要访问受此类权限保护的组件,则必须使用与受保护组件相同的证书对应用程序进行签名。这不仅适用于Android系统,也适用于Android应用程序,即在您的应用程序中,您可以拥有受签名权限保护的组件,因此,只有具有相同签名的应用程序才能访问此组件。
我们要回答你的问题的第三个论点是Android禁止安装具有相同包名但签名不同的包。
因此,
我有一个系统应用程序,OEM安装系统映像,但是 由我签名。如果我上传更新的apk到市场,将是 market app会自动安装此更新吗?
如果我的系统应用程序改为使用平台签名进行签名 我的,这意味着任何更新也必须与 平台签名,对吗?可以更新平台签名的apk 市场?
答案是否定的。虽然位于/ system / app中的应用程序可以使用不同于平台的证书进行签名,但只有系统更新才能更新这些应用程序。
要解决您的问题,您可以更改应用程序的软件包名称,使用您的应用程序(如果应用程序不需要访问受保护的Android组件)或平台(如果应用程序应该可以访问受保护的组件,并且如果您可以访问此签名)并将此应用程序推向市场。然后,您将通过市场收到应用程序的更新。
答案 1 :(得分:0)
系统不会将/ data / app中的apk视为更新,除非signatur与/ system / ap中的那个匹配