我对我的应用程序进行了很多更改:数据库方案、图形、代码等。最大的是我将其重命名为完全不同的包名称。applicatgio 在manifeste.xml 文件中具有相同的名称和Id,并且apk 具有相同的名称和相同的数字签名。
然而,当使用 时./adb install -r myapp.apk, myapp 在菜单中出现两次。当然,由于DB存储在使用包名作为名称的目录中,因此用户感觉它的数据丢失了。
我怎样才能防止这种情况发生,如果不能,我怎样才能自动化迁移?
我有几个线索:提示用户卸载旧应用程序、将数据库从旧文件复制到新文件等。
直接的答案是应用程序出现两次,因为 Android Market 和 Android OS 将两个不同的包视为两个不同的应用程序。代码可以相同,但如果包不同,应用程序就完全不同
Android Market 通过包名称来识别应用程序。我怀疑这是因为操作系统按包跟踪程序......这是有道理的,您不希望安装两个具有完全相同名称的包,操作系统如何知道要调用哪一个?因此,如果您安装的软件包与已安装的软件包同名,操作系统会将其视为软件包升级,并让新程序访问旧的用户数据。
您声明这些包共享相同的 ID,我假设这是用户 ID。这使您能够在包之间共享数据。更多信息在这里:
http://developer.android.com/guide/topics/security/security.html#userid
建议:发布对旧软件包的小升级,提供所需的任何粘合剂,以使其与新软件包共享数据。然后发布新包,并包含从旧包导入用户数据的代码(需要相同的 UserId 和签名)。该转换对于用户来说是无缝的(无需手动备份和导入)。
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |