Skip to content

AOSP 目录结构说明

  • bionic: 包含 Android 的 C 标准库(libc)、数学库(libm)、动态链接器(linker)等基本库的实现。专为 Android 设计,优化了性能和内存使用。
  • bootable: 包含启动相关的代码,例如 recovery 系统,用于更新和恢复设备的小型独立操作系统。
  • build: 包含构建系统的核心脚本和配置文件,用于编译 Android 源代码和生成系统镜像。
  • cts: Compatibility Test Suite(兼容性测试套件),用于验证设备兼容性以确保应用在所有设备上的一致性表现。
  • dalvik (在较新版本的 Android 中已被移除): 早期 Android 版本使用的 Dalvik 虚拟机的源代码。
  • development: 包含用于开发和测试的应用程序和工具,例如模拟器配置、测试工具等。
  • device: 包含特定硬件设备的代码和资源,如设备制造商和运营商的定制。
  • docs: 项目文档。
  • external: 包含 Android 系统使用的第三方库和工具。
  • frameworks: 包含大部分的 Android 框架层代码,支持所有 Android 应用运行的核心组件。
  • hardware: 包含与硬件相关的接口和抽象层代码,支持不同的硬件组件。
  • libcore: 包含 Android 核心库,例如 Java 核心库的实现。
  • out: 编译过程中生成的输出文件存放位置,包括最终的系统镜像文件。
  • packages: 包含 Android 中的标准应用程序和库,例如电话、联系人应用和 WebView。
  • prebuilts: 包含编译 Android 源代码所需的预编译工具和库。
  • system: 包含操作系统的核心组件,如 init 进程和各种系统服务。
  • vendor: 通常包含供应商特定的代码和资源,这些通常是与特定硬件密切相关的。

替换framework

编译framework
模块路径/framework/base/Android.bpout/target/product/flame/system/framework/framework.jar

sh
make framework-minus-apex
cp out/target/product/flame/system/framework/framework.jar /system/framework/framework.jar

删除优化文件 .art .oat .vdex
/system/framework/oat
/system/framework/arm
/system/framework/arm64

重启zygote

adb shell stop
adb shell start

Android 文件格式说明

  • .OAT 文件(Optimized Android File):

    • .oat 文件包含了为 Android 设备优化后的应用程序代码。当 APK 文件安装到设备上时,Android 的运行时环境(ART)会将 APK 中的 DEX 文件编译成机器码,这个过程称为“预编译”或“AOT 编译(Ahead-of-Time Compilation)”,编译后的代码就存储在 .oat 文件中。.oat 文件使应用程序启动更快,因为它直接运行编译后的机器码,而不是每次都从原始字节码开始。
  • .ODEX 文件(Optimized DEX):

    • .odex 文件是 Android 应用中分离的优化的 DEX 文件。在早期 Android 版本中,系统应用常常将 DEX 文件(包含字节码)预编译成 .odex 文件来提升启动速度和系统性能。.odex 文件减少了在应用启动时的 CPU 耗时,因为它已经是预处理和优化过的代码。
  • .VDEX 文件(Verified DEX):

    • .vdex 文件是在 Android 8(Oreo)引入的,包含了验证后的 DEX 文件。这些文件用于存储经过验证但未优化的 DEX 文件,从而加快了应用的安装过程以及 ART 的 JIT(即时编译)过程。
  • .ART 文件:

    • .art 文件格式与 Android 的运行时(ART)环境相关,主要用于存储预编译的应用代码。不过,在实际使用中,.art 文件并不常见,因为 Android 主要使用 .oat 文件来存储这类信息。

创建分支

sh
repo start android-12.0.0_r34_hack --all

下载Github Desktop

sh
export ALL_PROXY="http://192.168.2.12:7890"

#配置源
wget -qO - https://mirror.mwt.me/shiftkey-desktop/gpgkey | gpg --dearmor | sudo tee /usr/share/keyrings/mwt-desktop.gpg > /dev/null
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mwt-desktop.gpg] https://mirror.mwt.me/shiftkey-desktop/deb/ any main" > /etc/apt/sources.list.d/mwt-desktop.list'

#安装github-desktop
sudo apt update && sudo apt install github-desktop

几种读取属性的办法

sh
Settings.Secure.getInt(getContentResolver(),Settings.Secure.ADB_ENABLED)

android.os.SystemProperties.get("ro.debuggable");

adb shell getprop ro.debuggable

新增API 要重新生成文档

sh

make update-api
make api-stubs-docs-update-current-api
make api-stubs-docs-non-updatable-update-current-api

读取log

sh
#-E匹配多个条件,用|分割
adb logcat | grep -E "MyGame|Settings"

参阅