更新Android系统应用程序,带/不带平台签名

时间:2013-02-07 20:10:18

标签: android system google-play signature platform

我有一个系统应用程序,OEM安装系统映像,但由我签名。如果我将更新的apk上传到市场,市场应用程序会自动安装此更新吗?

如果我的系统应用程序使用平台签名而不是我的签名,这意味着任何更新也必须使用平台签名进行签名,对吗?可以从市场更新平台签名的apk吗?

2 个答案:

答案 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中的那个匹配