本项目将 AOSP Android 4.4.4_r2.0.1 的部分源码(主要为 Dalvik VM 及其依赖组件)抽取出来,以 Linux 作为目标运行环境,脱离 AOSP 原生构建系统,使用 CMake 进行编译与运行。
项目主要用于:
- 理解与研究 Dalvik 虚拟机的工作原理
- 在 Linux 上以更轻量的方式调试/阅读 Dalvik 相关实现
- 源码来源:AOSP
android-4.4.4_r2.0.1 - 主要涉及模块:
dalvik/(Dalvik VM 核心)libnativehelper/external/zlib/external/libffi/compat/(为 host/Linux 环境补齐部分 Android 接口/行为)art/dalvikvm/(dalvikvm 启动程序)libcore/(提供部分 Java 层源码参考;运行时使用的core.jar位于framework-dex/)
- CMake >= 3.10
- 支持 32-bit 编译的工具链与依赖(本项目默认通过
-m32构建)- 常见需要安装 32-bit 相关库/工具链(不同发行版包名不同)
本项目顶层 CMakeLists.txt 默认追加了:
CMAKE_C_FLAGS += -m32CMAKE_CXX_FLAGS += -m32CMAKE_ASM_FLAGS += -m32
示例:
cmake -S . -B build
cmake --build build -j顶层 CMakeLists.txt 中默认安装路径:
INSTALL_DIR = /tmp/linux-dalvik
并会安装 framework-dex/core.jar 至:
/tmp/linux-dalvik/framework/core.jar
如需修改安装目录,请直接调整 CMakeLists.txt 中的 INSTALL_DIR。
dalvikvm 位于构建输出目录下(不同构建目录名称不同)。示例:
/path/to/build/art/dalvikvm/dalvikvm \
-Xbootclasspath:/tmp/linux-dalvik/framework/core.jar \
-cp classes.dex \
test.HelloWorld其中:
-Xbootclasspath:.../core.jar指定 Dalvik 启动所需的核心类库-cp classes.dex指定待执行的 dex
dalvik/- Dalvik VM 核心实现
art/dalvikvm/dalvikvm启动程序(host 侧入口)
compat/- Android/host 兼容层实现
framework-dex/- 运行所需的
core.jar
- 运行所需的
libcore/- AOSP libcore 的部分源码(主要用于参考与对照)
本项目用于学习与研究目的。AOSP 相关代码版权归原作者/Android Open Source Project 所有。