在升级我的 android 应用程序期间,我更改了包名称。但 Android 市场不允许上传更改的包名应用程序作为升级。如果我将应用程序作为新应用程序上传,用户的设备上是否会有两个应用程序?如何确保用户不必从头开始重新下载应用程序而不恢复我的包名称的更改?
问问题
13650 次
3 回答
12
两个包 = 市场上的两个不同应用程序。一旦你上传了一个应用程序,它的包应该是一样的。此外,密钥应该相同。
于 2011-01-06T06:15:07.993 回答
10
Android 市场只关心清单中的包名称,而不是源代码中的实际包名称。
您可以尝试在清单属性中提供旧包名称,然后为活动提供新包名称而不是相对名称(即 .MainActivity)
像这样:
<manifest package="your.old.package" ...>
...
<application android:name="your.new.package.MainActivity" ...>
可以工作..
我计划以这种方式提供我的应用程序的两个版本(付费/免费),并使用相同的项目和代码。
于 2011-03-09T11:01:22.863 回答
0
如果您更改包名称,它将被视为一个单独的应用程序 - 不仅在市场上,而且 apk 通常只会“替换”相同的包名称(并且仅当它们都使用相同的密钥签名时)。
尽管可以通过使用两个密钥签署中间包来逐步过渡到新密钥,但目前没有简单的方法来逐步过渡包名称。
可以做到的最好的是:
- 新的 apk 版本使用相同的密钥签名,但具有不同的包名称。
- 安装后,新的 apk 安排使用
shared_prefs
旧包名。 - 数据被复制到新的包名称。
- 新版本请求删除旧版本,用户会看到卸载对话框。
注意应用数据通常保存在这里:
/data/data/pac.kage.name/
我还没有尝试过,所以我还不能提供更多细节。您可能还对我提出的无缝转换包名称的请求感兴趣。
于 2012-05-12T18:11:13.703 回答