我已经构建了一个在 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 中包含了这些类,预加载的类仍然会被实例化。
这对我来说听起来像是一个死胡同...... :(