【发布时间】:2012-07-26 02:23:59
【问题描述】:
我已经构建了一个在 Android 2.3.* 和 4.0.* 上运行良好的 Android 应用。但是,在将我的设备升级到 Jelly Bean (4.1.1) 后,我发现我的应用程序无法正常运行(崩溃、ANR 等)。
作为一种临时解决方法,我想知道是否可以将 Android 框架 JAR 的早期版本(例如 Android 2.3)打包到我的 APK 中并强制我的所有代码使用该 JAR 中的类/API?
我认为在我的 APK 中包含 JAR 应该更容易。但我不知道如何强制我的代码在运行时使用 JAR 中的类/API。
我知道这不是一个体面的解决方案(黑客攻击、包大小、法律问题等),即使它会起作用。但我只是好奇这是否可行。
任何建议或提示将不胜感激!
(编辑)
我尝试了以下方法:
- 从 Android 2.3 ROM 中提取 /system/framework/framework.odex;
- 对其进行解译并将其转换为 JAR 文件(例如 framework.jar);
- 我验证了 framework.jar,它包含实际的框架代码,而不是存根方法;
- 将framework.jar 放入我项目的libs 文件夹并构建APK;
- 我验证了结果APK,确实包含了android框架类。
但是,我的代码似乎仍在使用 Android 设备中安装的实际 SDK 版本的类/API。 :(
(编辑)
出于性能原因,Zygote 在系统启动期间似乎已经从设备 (/system/framework/framework.odex) 预加载了所有框架/核心类。所以即使我在我们的 APK 中包含了这些类,预加载的类仍然会被实例化。
这对我来说听起来像是一个死胡同……:(
【问题讨论】:
-
这可能不是一个好主意。您可以通过清单中的 maxSdk 属性限制应用下载。然后修复你的错误并删除它..
-
对不起,Ran,不幸的是,排除果冻豆现在对我来说可能不是一个选择...... :(
标签: android jar apk android-4.2-jelly-bean