繁体   English   中英

由于应用程序签名不同,重新安装失败

[英]Re-installation failed due to different application signatures

当我尝试调试已安装的应用程序时,出现上述错误消息。 遇到此问题的大多数其他人似乎是在具有不同密钥文件的不同机器上开发的,但是我正在同一盒子上进行所有操作。

我的问题是我正在测试数据库升级过程(即SQLiteOpenHelper扩展的onUpgrade()方法做什么)。 为此,我想尝试在各种较旧的版本之上进行升级。 这些版本可以作为已签名的应用程序包使用。 当我将这样的程序包部署到新的仿真器,然后尝试在顶部调试当前版本时,在主题行出现错误。 我认为这是因为调试部署程序包是未签名的,而当前安装的程序包是已签名的。 再一次,我知道如果我停止当前安装的应用程序,该错误就会消失,但是随后我将无法测试升级。

我不想经历将开发环境切换回旧版本的工作,因此我可以为这些版本构建未签名的程序包。 我什至无法执行此操作,因为我最近切换了源代码存储库并丢失了一些历史记录。

我相信,如果我能够让Eclipse生成签名的包进行调试,那么它应该可以工作。 另外,我可以手动部署已签名的程序包并启动调试会话,而无需进行构建/部署步骤,但是我也没有弄清楚这是否可行。 我能做什么?

编辑: Android文档有助于弄清楚如何使用调试密钥对软件包进行签名,但这对我没有帮助,因为我需要使用私钥进行调试。 我想这是不可能的。

您可以使用发布密钥对当前软件包进行签名,在设备上安装,运行应用程序并在Eclipse中连接调试器。 如何连接调试器:在“设备”视图的DDMS透视图中,选择您的应用程序并按下带有“绿色错误”的按钮:

在此处输入图片说明

我将其发布为答案:

您应该使用一个签名来生成所有签名-否则它将无法正常工作。 只有卸载和全新安装才能使用不同的签名。 http://developer.android.com/guide/publishing/app-signing.html也是从那里获取的:

Eclipse用户 如果您正在Eclipse / ADT中进行开发(并且已经按照上面的“签名的基本设置”中的说明设置了Keytool和Jarsigner),则默认启用调试模式下的签名。 在运行或调试应用程序时,ADT将使用调试证书对.apk进行签名,在程序包上运行zipalign,然后将其安装在选定的仿真器或连接的设备上。 只要ADT有权使用Keytool,就不需要您采取任何具体措施。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM