我有一个系统应用程序,OEM安装了系统镜像,但由我签名。如果我将更新的apk上传到市场,市场应用程序会自动静默安装此更新吗?
如果我的系统应用程序使用平台签名而不是我的签名,这意味着任何更新也必须使用平台签名,对吗?平台签名的apk可以从市场上更新吗?
发布于 2013-02-08 16:45:03
首先,让我们澄清所有类型的应用程序之间的区别。
系统应用程序是位于/system/app
文件夹中的应用程序。这些应用程序设置了标志ApplicationInfo.FLAG_SYSTEM
。在普通设备中,分区/system
被挂载为只读访问。因此,无法更新系统应用程序,因为它位于只读位置。这些应用程序只能作为OTA更新的一部分进行更新。
普通应用位于读写的/data分区上。因此,这些应用程序可以由系统更新。
现在让我们来谈谈签名。部分Android组件有签名类型的权限保护。这意味着,如果您希望访问受此类型权限保护的组件,则您的应用程序必须使用与受保护组件相同的证书进行签名。这不仅适用于Android系统,也适用于Android应用程序,即您的应用程序中可以有一个受签名权限保护的组件,因此只有具有相同签名的应用程序才能访问该组件。
我们需要回答你的问题的第三个论点是,Android禁止安装具有相同包名但不同签名的包。
因此,
我有一个系统应用程序,原始设备制造商安装了系统镜像,但由我签名。如果我将更新的apk上传到市场,市场应用程序会自动静默安装此更新吗?
如果我的系统应用程序使用平台签名而不是我的签名,这意味着任何更新也必须使用平台签名,对吗?平台签名的apk可以从市场上更新吗?
答案是否定的。虽然位于/ system /app中的应用程序可以使用与平台证书不同的证书进行签名,但这些应用程序的更新只能通过系统更新来实现。
要解决您的问题,您可以更改应用程序的包名,使用您的(如果应用程序不需要访问受保护的Android组件)或平台(如果应用程序应该可以访问受保护的组件,并且如果您有权访问此签名)对其进行签名,然后将此应用程序投放市场。然后,您将通过市场收到应用程序的更新。
发布于 2014-12-05 03:29:19
除非签名与/ system /ap中的签名匹配,否则系统不会将/data/app中的apk视为更新
https://stackoverflow.com/questions/14760089
复制相似问题