【问题标题】:"Package file is invalid", solution from the developer side (Android)“包文件无效”,来自开发者端的解决方案(Android)
【发布时间】:2014-09-09 05:04:24
【问题描述】:

我厌倦了看到很多关于这个的 Stackoverflow 问题,甚至在谷歌论坛或谷歌官方支持网站上,发布“解决方案”导致通过 ADB 卸载包,对手机进行 root 操作,删除缓存Google Play 服务等...

包装方面有什么解决办法吗?

我的意思是,我有一个安装了数十万次的应用,不幸的是,许多用户在从商店升级我的新版本时抱怨这个错误。

显然,我不能一一告诉他们必须这样做或那样,因为他们不是开发人员,他们只是想升级和运行应用程序!

一些用户告诉我(抱怨)这是自我的应用程序上次“升级尝试”以来发生的,他们在手机中的任何其他应用程序中都没有遇到这种“包文件无效”的情况。

所以,我想我可以通过另一个升级来解决这个问题。

在下一次 APK 编译中,我可以做任何解决方案,上传到 Google Play 商店并在不“打扰”我的用户的情况下解决这个问题吗?

提前谢谢你

【问题讨论】:

  • 其中一个原因可能是某些 ART/Dalvik 不兼容?
  • 什么意思?我一直在使用相同的 Eclipse 和 Android SDK
  • 没有解决方法,我有同样的问题,但我观察到这个问题只出现在非流行设备中,所以我就这样离开了。我知道这不好,但对此无能为力。

标签: android installation package


【解决方案1】:

我在我的项目中也遇到了同样的问题。我正在使用新的 jar、Git 开源库代码为 Nice UI 添加更多功能。

为了寻找解决方案,我发现 Play 商店的其中一项更新存在问题 http://www.androidcentral.com/google-investigating-package-file-invalid-errors-google-play 但这与我的问题完全无关

再次搜索我发现了这个 http://birbit.com/how-to-solve-linearalloc-problem/ 因此,该解决方案看起来是使用 DexClassLoader 动态加载一些 jar 文件。 http://android-developers.blogspot.in/2011/07/custom-class-loading-in-dalvik.html

  1. 准备 jar 文件的接口(所有类和方法的列表)并在应用程序中拥有接口 - 需要了解如何执行此操作。 - 我们可以只在我们的应用程序中拥有我们需要的那些类,而忽略其余的类。通过这种方式,我们可以为少数现有的 jar 和我们必须添加的任何新 jar 实现,以确保我们不会再次遇到此问题。
  2. 将 jar 保存在 assets 文件夹中
  3. 从 jar 中加载每个类(基于我们在界面中的 jar 列表)。 (这些类将在首次启动时仅加载一次)

但基于此,这似乎涉及大量编码更改和耗时的事情。

此外,我发现 facebook 在他们最初的 android 应用程序中也面临同样的问题 https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

我采取的最终方法是从我的应用程序不需要的 jar/git 库项目中删除其他代码。之后我的应用安装在 2.3.X 上没有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多