【问题标题】:Published Android apk gives error "Package file was not signed correctly"已发布的 Android apk 出现错误“包文件未正确签名”
【发布时间】:2011-01-31 22:33:35
【问题描述】:

我最近将我的应用程序上传到了 android 市场,但是由于错误,它在下载时拒绝运行

包文件未正确签名

我首先使用eclipse发布数据包,右键导出,创建密钥库然后发布,但是它拒绝工作。

然后我下载了 keytool 和 jarsigner 并使用它们签署了我发布的升级。但是,这会产生相同的错误。

我不知道我做错了什么,由于我无法删除应用程序,我无法尝试重新开始,谁能帮助我?

谢谢

【问题讨论】:

  • Hrm,我已经这样做了,但现在我收到了“不兼容的更新”错误。 o_0
  • 虽然接受的答案可能对您的情况是正确的,但它不是唯一的。检查 Melloware 所说的,这就是解决我的问题的方法。 SDK 1.7 真的不行!使用旧的,除非有人在某个地方解决了这个问题。

标签: android keytool jarsigner google-play


【解决方案1】:

此错误通常是因为您尝试推送使用与您在初始提交中使用的密钥不同的密钥签名的更新。您需要找到第一次发布应用程序时使用的密钥,并使用它来签署更新。

【讨论】:

  • 您所指的错误是您上传到市场时遇到的错误。他在尝试运行应用程序时遇到错误。
  • 在我的情况下,这是因为我开始意外地使用市场不喜欢的 JDK7 密钥工具签署我的应用程序。切换回 1.6 keytool 然后这个问题就消失了。
【解决方案2】:

您的调试副本很可能仍安装在您的设备上。现在您已经下载了同一个应用的不同副本,它导致了这个错误。

从您的设备上完全卸载该应用。然后再次从市场上下载它,它应该可以工作。

【讨论】:

  • 您不能在同一设备上拥有一个应用的两个实例。如果他拥有具有相同版本号的调试副本,他甚至必须在下载之前将其卸载。不过,在调试版本上安装更高版本可能是罪魁祸首。
  • 对我来说,清除应用数据(从设置中)解决了问题。
  • 应用数据在哪里(来自设置)?通话中?在电脑上?
  • @mbaird 它在手机上的哪个位置 - 在某个特定文件夹中?我对 Android 有点陌生。
  • 查看我在平板电脑上开发时常见问题的答案。 stackoverflow.com/a/19746947/1172494
【解决方案3】:

我开发的应用程序也遇到了同样的问题。

转到应用管理器,清除应用的数据,然后在它正在运行时强制停止并卸载它。然后再次尝试从市场安装。这对我有用。

https://market.android.com/details?id=net.trackmelite.GoogleMaps&feature=search_result

【讨论】:

    【解决方案4】:

    好的,我遇到了同样的问题,建议的解决方案都不适合我。我以与 2 年相同的方式签署我的应用程序,Android Market 接受它很好,只是用户无法从 Market 下载它,出现“Package Not Signed”错误。

    结果是我正在处理的另一个项目安装了 JDK7。它成为了默认的 JDK,出于某种原因,JDK7 的 keytool 正在以一种 Android 一定不喜欢的方式对包进行签名。所以我恢复到 JDK 1.6.0_23 并重新运行我的构建并将其投放市场,一切都恢复正常。

    我希望这对其他人有帮助。

    【讨论】:

    • 遇到了同样的问题。这是罪魁祸首(在我的情况下,无论如何)!我想知道 JDK7 发生了什么变化,使其 keytool 与 JDK6 不兼容...
    • 我添加了一个使用 JDK7 签署 APK 的新答案
    • Melloware 我也面临同样的问题。而且我认为您给出的使用 1.6 重建应用程序的解决方案是完全正确的。但我使用的是 Unix。如何指定应用程序应使用 1.6 版本构建。我使用终端上执行的命令构建应用程序。
    • 在 Unix 上,您需要更改 JAVA_HOME 环境变量或在命令行强制它指向 Java6。
    • 请注意,虽然有时可能会出现不同的签名算法,但我的情况并非如此。 1.7 和 1.6 都使用 dsaWithSHA1 对其进行了签名,但 1.6 可以在 1.7 没有的地方工作。此外,由于某种原因,只有 Android 2.2 对 1.7 签名的 APK 存在问题。
    【解决方案5】:

    使用 JDK7 签署 APK 时出现问题。您可以将其添加到 build.xml 中解决它

    <presetdef name="signjar">
        <signjar sigalg="MD5withRSA" digestalg="SHA1" />
    </presetdef>
    

    来源:KIYUT Developer Blog

    【讨论】:

    • 对不起,我不知道 MonoDroid 是否使用标准 Android 项目使用的相同文件。如果我没记错的话,在标准的 Androd 项目中,build.xml 是在项目的根文件夹中。
    • 嗯,我找不到 build.xml。我正在使用 Eclipse;相当标准,对吧?是否有其他文件与其对应,例如 project.properties、default.properties、AndroidManifest.xml 或 .project?
    • @theJerm 看看这个:forums.xamarin.com/discussion/28178/…。这是正确的解决方案,但你必须在 MonoDroid 中使用它(我也是 Xamarin-Developer)
    【解决方案6】:

    我是 Android 新手,但我能够神奇地解决这个问题:D
    我在我的应用程序中使用 Java 1.7 并使用命令行实用程序 [keytool、jarsinger 和 zipalign] 对我的应用程序进行签名并得到了同样的错误。
    然后我回到 Eclipse 并使用 Android 工具“导出签名的应用程序包”和我最初发布我的应用程序的密钥库;拿了那个APK并使用命令行对其进行压缩。[不得不增加清单中的版本代码]。我取消了旧的 APK 并发布了这个新的。一旦你这样做了,不要立即测试它
    不知道你要等多久,但当我检查时,我的工作 4 小时后 :)

    【讨论】:

      【解决方案7】:

      在平板电脑上,请注意,如果您安装了应用程序的调试版本,然后像往常一样将其卸载(拖到垃圾箱直到显示“卸载”),这还不够。因为平板电脑有可能供多个用户使用,所以你必须去

       Settings > Apps > All
      

      然后一直滚动到最底部。在那里,您将看到您的应用程序。点击它,然后点击操作栏中的Menu(三个点),然后点击uninstall for all users。然后你就可以走了。

      【讨论】:

      • 我遇到过这种情况——在平板电脑上调试版本,在 Play 商店中将其放入 beta 版,尝试下载,但出现错误。通过设置卸载,但在我按照您的说明操作之前它不起作用。谢谢!
      【解决方案8】:

      最近,我从命令行签署了我的 apk 并收到此错误。我通过此链接中的说明解决了此错误:

      http://developer.android.com/tools/publishing/app-signing.html

      $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
      

      【讨论】:

        猜你喜欢
        • 2012-12-15
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 2013-11-19
        • 2016-04-05
        • 2020-08-02
        • 2017-02-12
        • 2023-03-13
        相关资源
        最近更新 更多