是什么决定了应用是否在Android电子市场中被标记为有更新?显然,包名必须相同,并且Market中的应用必须具有更高的versionCode。
还有什么?我注意到,侧载先前发布的应用程序版本将触发Market应用程序中的“更新”消息。但是,安装调试版本的效果不同。它将其识别为已安装,但不表示更新可用。我认为这是因为他们签署了两个不同的签名。那是准确的吗?
如果是这样,如果使用相同的签名和程序包名称从第三方应用程序商店安装旧版本的应用程序,Android Market是否会显示该应用程序有可用的更新?防止这种情况的最佳方法是什么 - 使用不同的签名?
我没有提到任何其他因素吗?
答案 0 :(得分:1)
调试版本使用不同的密钥(由Eclipse自动创建)进行签名,因此它被视为与Market中的应用程序不同的应用程序(使用您的发布密钥签名)。但是,随着新的Market(3.x),即使对于通过Eclipse安装的调试版本,我也会收到更新通知,所以看起来它不是检查签名,只是检查包名称和版本。 (当然,更新失败,因为签名不同)。
您可以(尝试)使用PackageManager
确定应用的安装方式,例如String installPM = pm.getInstallerPackageName(pname);
,并根据安装程序执行某些特定处理。 Android Market应用可能会做类似的事情,但您必须进行测试才能找到答案。
总而言之,Market应用程序的工作方式未公开,并且可能会在下一个版本中发生变化,因此没有防弹方式可以控制是否收到更新通知。