gpt4 book ai didi

java - Android/Java 库

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:13 25 4
gpt4 key购买 nike

这些问题是我试图理解 Android 如何处理 JAR 文件和外部库等。它是概念性的。

在Java中,有一个JAR文件rt.jar是JRE自带的,这样每个应用程序都可以访问java核心库。

  1. Java 类加载器是否仅在应用程序需要时才加载类?

  2. rt.jar 相当于android 的/system/framework/jar 吗?

  3. 当我们使用 SDK 开发应用程序时,我们会从其中一个 android API 中包含 android.jar。 android.jar 本质上是为该 API 编译的 AOSP(减去一些隐藏的库)吗?

  4. android.jar 实际上并不包含在 APK 中,对吗?在设备上,APK 正在使用/system/framework/framework.jar,对吗?

  5. 如果对 4 的回答是"is",android 如何告诉应用程序使用该库?这是我可以查看源代码的东西吗?

  6. 当我们在Android项目中添加一个JAR包,是不是就像包含了一个静态库?来自库的代码是否像项目的其余部分一样被编译到 classes.dex 中?

  7. 当我们在应用程序中添加一个android库项目时,它是否也被编译成classes.dex?这和 6 的唯一区别是库项目可以包含资源吗?

  8. 如果每个应用程序都引用/system/framework/framework.jar(以及其他应用程序,如 services.jar 等),那么设备上是否同时运行该库的一堆实例?是不是像动态库一样多次加载到内存?

我很想知道所有这些问题的答案,但我也希望能提供一些阅读这些内容的好地方的建议。

最佳答案

如果我在任何答案中有误,请纠正我,我会进行编辑:

1.- Android 多年来一直采用 JIT,但现在有一个新的运行时强制执行 AOT 以提高性能,现在大多数设备都可以处理它:Dalvik ART

2.- ??

3-5.- Android jar 由 IDE 提供用于编译目的,但实际实现由操作系统加载,这就是它们实现向后兼容性(和 fragment 化)的方式,并且相同的 APK 可以在像三星的熟 rom 上工作或亚马逊的。

6.- 是的,所有内容都打包在 classes.dex 中,所有依赖项之间有 65k 方法的硬上限。操作系统中可能已经包含一些依赖项的编译时替换。

7.- 我不确定新的 AAR,但模块或其他项目已编译并 bundle 在一起,是的。

8.- 这些东西和系统 Assets 有一个共享内存空间:Commonsware - What is Dalvik部分内存消耗。

关于java - Android/Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161093/

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