在我的应用程序APK中包含早期版本的android框架JAR?

时间:2012-07-25 12:14:52

标签: android jar apk android-4.2-jelly-bean

我已经构建了一个在Android 2.3。*和4.0。*上运行良好的Android应用程序。但是,在将我的设备升级到Jelly Bean(4.1.1)之后,我发现我的应用程序无法正常运行(崩溃,ANR等)。

作为临时解决方法,我想知道是否可以将Android框架JAR的早期版本(比如说Android 2.3)打包到我的APK中并强制我的所有代码在该JAR中使用类/ API?

我认为在我的APK中加入JAR会更容易。但我不知道如何在运行时强制我的代码在JAR中使用类/ API。

我知道它不是一个不错的修复(黑客,包大小,法律问题等),即使它会起作用。但我只是好奇它是否可行。

任何建议或提示都将不胜感激!

(编辑)

我尝试了以下内容:

  1. 从Android 2.3 ROM中提取 /system/framework/framework.odex ;
  2. Deodexed并将其转换为JAR文件(比如framework.jar);
  3. 我验证了framework.jar,它包含实际的框架代码,而不是存根方法;
  4. 将framework.jar放入我项目的libs文件夹中并构建APK;
  5. 我验证了结果APK和确实包含了android框架类。
  6. 但是,我的代码似乎仍在使用Android设备中安装的SDK实际版本的类/ API。 :(

    (编辑)

    出于性能原因,似乎所有框架/核心类都已在系统启动期间由Zygote从设备(/system/framework/framework.odex)预加载。所以,即使我已经将这些类包含在我们的APK中,预先加载的类仍将被实例化。

    这对我来说听起来像死路一条...... :(

1 个答案:

答案 0 :(得分:3)

  

作为临时解决方法,我想知道是否可以将Android框架JAR的早期版本(比如说Android 2.3)打包到我的APK中并强制我的所有代码在该JAR中使用类/ API?

这是不可能的,对不起。您认为“Android框架JAR”没有代码 - 它只是Android SDK中公开的类和方法的存根实现。真正的Android框架驻留在固件中,您无法替换它。