为什么更新Android应用程序可以使它出现两次?

时间:2009-05-20 10:35:31

标签: android

我对我的应用程序进行了很多更改:数据库方案,图形,代码等。最大的是我重命名为完全不同的包名称。 applicatgio在manifeste.xml文件中获得了相同的名称和Id,并且apk具有相同的名称,具有相同的数字签名。

然而,当使用./adb install -r myapp.apk时,myapp在菜单中出现两次。当然,由于DB使用包名作为名称存储在目录中,因此用户感觉其数据丢失。

如何防止这种情况发生,如果我不能,我怎样才能自动迁移?

我有几条线索:提示用户卸载旧应用程序,将数据库从旧文件复制到新文件等等。

2 个答案:

答案 0 :(得分:3)

直接答案是应用程序出现两次,因为Android Market和Android OS将两个不同的包视为两个不同的应用程序。代码可以相同,但如果包不同,则应用程序完全不同

Android Market按其包名识别应用程序。我怀疑这是因为操作系统按程序包跟踪程序...有意义的是你不希望安装两个具有完全相同名称的软件包,操作系统将如何知道要调用哪一个?因此,如果您安装的软件包名称与已安装的软件包同名,则操作系统会将其视为软件包升级,并让新程序访问旧的用户数据。

您声明软件包共享相同的ID,我认为这是用户ID。这使您可以在包之间共享数据。更多信息请点击此处:

http://developer.android.com/guide/topics/security/security.html#userid

建议:对您的旧软件包进行小型升级,提供所需的任何粘合剂,以便与新软件包共享数据。然后使用代码发布新包,以从旧包导入用户数据(需要相同的UserId和签名)。转换对用户是无缝的(无需手动备份和导入)。

答案 1 :(得分:1)

应用程序签名必须相同。如果您在另一个Eclipse中导入项目,构建它并将其上传到市场,您将看到2个独立的应用程序。