You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测试调试本地AOSP构建修改并在模拟器运行?含全栈调试

本地构建AOSP并在模拟器运行的可行性与调试指南

可行性确认

完全可行。AOSP官方支持针对模拟器的构建目标,常见的aosp_x86_64-eng、aosp_arm64-eng等编译目标均适配模拟器环境,可直接构建出能在本地模拟器运行的系统镜像。


一、模拟器运行期间测试本地修改

根据修改层级的不同,可采用对应的测试方式:

  • App层修改
    • 自研App:直接通过adb install -r app-debug.apk将编译后的APK覆盖安装到运行中的模拟器;
    • 系统内置App:重新编译对应模块(如make Settings),通过adb remount后adb push替换/system/app/或/system/priv-app/下的目标APK,或执行make installclean后重新刷入系统镜像。
  • Framework层修改
    • 编译Framework相关模块(如make framework)生成新的system.img,重启模拟器时指定加载新镜像:emulator -system out/target/product/generic_x86_64/system.img;
    • 或通过adb remount后,将编译生成的jar文件推送到/system/framework/目录,重启SystemUI(adb shell am restart com.android.systemui)或整个模拟器。
  • HAL/Native层修改
    • 编译对应Native模块(如make libhardware)生成.so文件,adb remount后推送到/system/lib/或/system/lib64/对应目录,重启相关服务或模拟器即可生效。

注:eng版本的AOSP系统默认开启root权限与调试模式,无需额外解锁即可修改系统分区。


二、构建产物中模拟器的位置

  • 模拟器二进制文件:Linux环境下位于out/host/linux-x86/bin/emulator;Windows/macOS环境对应路径为out/host/windows-x86/bin/emulator或out/host/darwin-x86/bin/emulator。
  • 系统镜像文件:存储在out/target/product/generic_x86_64/(以x86_64编译目标为例),核心镜像包括system.img、userdata.img、ramdisk.img等。

三、通过CLI或Android Studio启动模拟器

CLI方式

  1. 配置AOSP环境变量(可将该命令加入终端配置文件,避免每次重复执行):
    source build/envsetup.sh
    lunch aosp_x86_64-eng
    
  2. 直接启动模拟器:
    emulator
    
    常用附加参数:
    emulator -system out/target/product/generic_x86_64/system.img -writable-system -no-snapshot-load
    
    -writable-system:允许修改系统分区;-no-snapshot-load:跳过快照,启动干净的系统环境。

Android Studio方式

  1. 打开Android Studio,进入Tools > Device Manager;
  2. 点击Create device,选择与构建目标匹配的设备类型(如Pixel 5);
  3. 在系统镜像选择界面,点击Show all images,找到本地构建的AOSP镜像(标记为Custom,路径指向AOSP的out目录);
  4. 完成设备创建后,点击启动按钮即可加载本地构建的AOSP系统。

四、全栈测试调试实现

完全支持从App层到Framework层再到HAL层的全栈调试:

  • App层(Kotlin/Java):用Android Studio连接运行中的模拟器,直接设置断点调试;通过adb logcat查看App日志。
  • Framework层(Java):
    1. 在Android Studio中导入AOSP Framework源码,配置调试器连接模拟器的远程调试端口(默认8700);
    2. 执行adb shell am set-debug-app -w com.android.settings指定待调试的系统App,重启该App后即可断点调试Framework代码;
    3. 通过adb logcat -s FrameworkTag过滤查看Framework层日志。
  • HAL/Native层:
    1. GDB调试:先执行adb forward tcp:1234 tcp:1234转发端口,再启动GDB并连接模拟器:
      gdb out/target/product/generic_x86_64/symbols/system/lib64/libhardware.so
      target remote :1234
      
    2. 日志查看:用adb logcat -s NativeTag查看Native层日志,或adb shell dmesg查看内核相关日志。

注:eng版本系统默认包含完整的调试符号表,无需额外配置即可进行全栈调试。

内容的提问来源于stack exchange,提问作者code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:05:14