我使用Flash Builder开发了一个Android应用程序。
使用旧证书(.PFX文件)创建了1.0版。
该证书已过期。
因此,我使用新证书创建新版本1.1。
但是当我尝试安装新版本时,会显示以下消息。
未安装应用程序:使用相同名称的现有包 已经安装了冲突的签名。
有一个简单的解决方案:卸载第一个版本(1.0)并安装新版本(1.1)。
但我不想丢失由1.0(旧版本)创建的应用程序数据。
有人可以建议更好的解决方案吗?
答案 0 :(得分:2)
不幸的是,截至目前,对于这种情况没有更好的解决方案。
引用Android Developers上的官方文档,
一般而言,所有开发人员的建议策略是签署所有 你的应用程序使用相同的证书,整个 预期的应用程序寿命。有几个原因 你应该这样做:
- 应用程序升级 - 当您向应用程序发布更新时,您就可以了 必须继续使用相同的证书或集合签署更新 证书,如果您希望用户能够无缝升级到 新版本。当系统正在安装更新时 应用程序,它将新版本中的证书与 那些在现有版本中。如果证书完全匹配, 包括证书数据和订单,然后系统允许 更新。如果您在不使用匹配的情况下签署新版本 证书,您还必须为其分配不同的包名称 应用程序 - 在这种情况下,用户将新版本安装为 全新的应用程序。
因此,根据文档的建议,您应该创建一个具有最大有效性的密钥,并在将来用它来签署应用程序。
确定签署策略的另一个重要考虑因素 是如何设置您将用于签名的密钥的有效期 你的申请。
如果您计划支持单个应用程序的升级,则应确保密钥的有效期超过 该申请的预期寿命。有效期为25年 或更多推荐。当您的密钥的有效期到期时,用户 将无法再无缝升级到您的新版本 应用
如果您使用相同的密钥签署多个不同的应用程序,则应确保密钥的有效期超出预期 所有应用程序的所有版本的生命周期,包括 可能在将来添加到套件中的相关应用程序。
如果您计划在Google Play上发布您的应用程序,您用于签署应用程序的密钥的有效期必须结束 2033年10月22日之后.Google Play强制执行此要求以确保 用户可以在新版本时无缝升级应用程序 可用。
总而言之,你必须卸载旧版本并安装新版本的新版本。
希望这有帮助。
答案 1 :(得分:0)
您可以使用证书颁发机构(CA)续订旧证书,这样就不会遇到此冲突。