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

时间:2012-02-20 18:43:37

标签: android debugging code-signing

当我尝试调试已安装的应用程序时,我收到上述错误消息。大多数遇到这种情况的人似乎都在使用不同密钥文件的不同机器上进行开发,但我在同一个盒子上做了所有事情。

我的问题是我正在测试我的数据库升级过程(即我的SQLiteOpenHelper扩展的onUpgrade()方法是什么)。为此,我想尝试在各种旧版本之上进行升级。这些构建可作为签名的应用程序包提供。当我将这样的软件包部署到一个新的模拟器,然后尝试在顶部调试当前版本时,我得到主题行中的错误。我认为这是因为调试部署包是未签名的,并且当前安装的包已签名。同样,我知道如果我取消安装当前安装的应用程序,错误就会消失,但我无法测试升级。

我不想完成将我的开发环境切换回旧版本的努力,以便我可以为这些版本构建未签名的包。我甚至可能无法做到这一点,因为我最近切换了源代码存储库并丢失了一些历史记录。

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

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

2 个答案:

答案 0 :(得分:3)

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

enter image description here

答案 1 :(得分:1)

我会将其作为答案发布:

你应该用一个签名生成它们 - 否则它不会工作。只有卸载和全新安装才能使用不同的签名。 http://developer.android.com/guide/publishing/app-signing.html也来自那里:

Eclipse用户 如果您正在使用Eclipse / ADT进行开发(并且已按照上面的“基本设置进行签名”设置了Keytool和Jarsigner),则默认情况下会启用登录调试模式。运行或调试应用程序时,ADT使用调试证书对.apk进行签名,在程序包上运行zipalign,然后将其安装在选定的仿真器或连接的设备上。如果ADT可以访问Keytool,则无需您执行任何特定操作。