为什么我的签名apk没有安装?

时间:2014-02-20 16:49:19

标签: android

我一直在开发我的应用程序一段时间,并使用运行方式 - >通过Eclipse在真实设备上运行* Android应用 * 。 现在我试图第一次向一些测试版用户提供它。 我使用Eclipse创建一个签名的应用程序,使用我通过向导生成的新密钥库。这似乎工作得很好,当我用Jarsign检查时,我收到消息“Jar Verified”,尽管也有一些警告。这些是“此Jar包含其证书链未经过验证的条目”和“Ths Jar包含不包含时间戳的签名”。

然后我将生成的apk复制到设备上并打开它。但得到一条消息“这个应用程序没有安装”。在log cat中我可以看到: “套餐在入境时没有证书;忽略!”

我发现有些人建议回到JDK 6(之前我确实有7个),但这没有帮助。 有些人认为这可能是由于清单中的活动重复所以我彻底检查了清单。

我发现如果我重命名apk,使其不再与包的最后一部分完全相同,它就会突然发挥作用。

所以如果包是com.mydomain.myapp而apk是myapp.apk我得到错误,但是如果它是myapp_debug.apk它安装就好了。

我觉得这很令人困惑,而且有点担心。我想最终发布这个应用程序,我不确定我是否做错了。

1 个答案:

答案 0 :(得分:1)

根据您的重命名使其成为工作描述,您已经在设备上安装了具有相同软件包名称的应用程序,但使用其他证书(可能是用于eclipse-launch安装的调试证书)签名。

您必须在安装发行版之前删除现有安装。您可以从设置菜单或使用

形式的ADB命令执行此操作
adb uninstall your.package.name

请注意,此删除操作会清除应用程序存储的私有数据 - 这是您必须执行此操作的部分原因,以防止冒名顶替者(自然拥有不同的证书)轻松抓取真实应用程序留下的数据。

在以这种方式向他人分发应用时,请记住,他们需要在设置菜单中允许未知/非市场来源。