更改已升级的Android应用程序的程序包名称

时间:2011-01-06 06:00:33

标签: android apk google-play android-install-apk

在我的Android应用程序升级期间,我更改了包名称。但Android市场不允许将更改的包名称应用程序上载为升级。如果我将应用程序作为新应用程序上传,用户是否会在他/她的设备上有两个应用程序?如何确保用户不必从头开始再次下载应用程序而不还原我的软件包名称更改?

3 个答案:

答案 0 :(得分:12)

两个包=市场上两种不同的应用。 上传一个应用后,其包应该相同。此外,密钥应该相同。

答案 1 :(得分:10)

Android市场只关注清单中的软件包名称,而不是源代码中的实际软件包名称。

您可以尝试在清单属性中提供旧包名称,然后为活动提供新包名称而不是相对(即.MainActivity)

像这样:

<manifest package="your.old.package" ...>
   ...
   <application android:name="your.new.package.MainActivity" ...>

可以工作..

我计划以这种方式提供我的应用程序的两个版本(付费/免费)并使用相同的项目和代码。

答案 2 :(得分:0)

如果您更改包名称,它将被视为一个单独的应用程序 - 不仅仅是在市场上,而且apk通常只会'替换'相同的包名称(并且只有当它们都使用相同的密钥签名时)

虽然可以通过签署中间包with both keys来逐步转移到新密钥,但目前还没有简单的方法来逐步修改软件包名称。

可以做到的最好的是:

  • 新的apk版本使用相同的密钥签名,但具有不同的包名称。
  • 安装后,新的apk会安排将shared_prefs与旧包名一起使用。
  • 将数据复制到新包名称。
  • 新版本请求删除旧版本,并且用户会看到卸载对话框。

注意应用数据通常保留在此处:

/data/data/pac.kage.name/

我没试过这个,所以我还不能再给出细节了。您可能也对我的request for a seamless way of transitioning the package name感兴趣。