gpt4 book ai didi

java - 替换eclipse中的android.jar

转载 作者:行者123 更新时间:2023-12-01 23:23:41 27 4
gpt4 key购买 nike

我需要对 android 源代码(android.jar)进行更改。

我知道我可以进行更改并编译一个新的 android.jar 文件。我也找到了一些关于此的链接。

但是我想做的是,为了让我的项目在 eclipse 上运行,我想单独添加framework.jar、common.jar、core.jar等,而不是创建一个android.jar,并删除eclipse 中构建路径中的 android.jar 库。

这可能吗?

我试过了,但不起作用。我将 jar 文件添加为系统用户库。我什至将 jar 文件设置为在构建路径配置中导出。我的代码已编译,但它给出了模拟器的启动错误。

任何人都可以向我提供有关此错误的任何信息。

最佳答案

据我所知,android.jar 库只是一个骨架,是正在运行的 Android 系统上存在的 android.jar 库的模型。

如果你反编译它,我认为类中的大多数方法都是通过抛出 UnsupportedOperationExceptionreturn null(如果需要)来实现的。

这样做是为了更快地编译/部署您的应用程序,并且生成的 .apk 使用更少的空间。

因此更改 .jar 中的源代码将毫无用处,因为它不会部署到设备/模拟器。

如果您有兴趣更改 Android 源代码,您应该真正检查 documentation for the Android source code并从源代码构建整个操作系统。

编辑:

重新阅读问题中有关将 .jar 添加为用户库的部分。

如果您将 android.jar 部署为用户库(即不共享),那么当您尝试多次(从不同来源)加载类时,您的应用程序将在运行时崩溃,因为这些类是已存在于设备上的 android.jar 中。

即您将无法加载自己的 Application 实现,因为它会与启动应用程序时由 Android 初始化的 Application 类冲突。在启动应用程序时加载 Application 类之前,您的代码不会运行,因此您无法“覆盖”它。

您可以查看this question了解更多信息(尤其是已获得赏金的答案)。

还有一些关于 this question 的信息,我想在这里补充一点,据我所知,您在使用类时无法卸载它:如果您想使用自定义类加载器来加载系统类,则必须停止正在使用您要使用的类的实例的应用程序的所有线程,保留有关该类的现有实例和类的静态数据的信息,卸载 Android 系统类,加载自定义类,重新创建您保留信息的所有实例(也恢复静态数据),然后恢复您已停止的所有线程。另外,预计其他地方也会出现问题,因为您不会覆盖的所有其他类/库可能依赖于您正在更改的代码。

关于java - 替换eclipse中的android.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20322052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com