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



我已经构建了一个在Android 2.3.*和4.0.*上运行良好的Android应用程序。然而,在将我的设备升级到果冻豆(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. 对其进行去索引并将其转换为JAR文件(比如framework.JAR)
  3. 我验证了framework.jar,它包含实际的框架代码,而不是存根方法
  4. 将framework.jar放入我项目的libs文件夹中,构建出APK
  5. 我验证了结果APK和android框架类确实包括在内

然而,我的代码似乎仍然使用安卓设备中安装的实际版本SDK的类/API。:(

(编辑)

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

这对我来说就像是一条死胡同…:(

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

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

最新更新