Android 模拟器源码下载
Android 模拟器源码的下载与 Android AOSP 源码库的下载过程类似,可以参考 Google 官方提供的 Android 源码下载文档 来了解这个过程。
不同的地方在于,下载 Android 源码,在初始化 repo 客户端,初始化对某个分支的下载时,通过如下的命令指定该 Android 分支:
而在下载模拟器源码时,则需要指定一个模拟器的分支。在 https://android.googlesource.com/platform/manifest/+refs 可以看到所有可以指定的分支,包括 Android 分支和模拟器分支,其中模拟器分支主要有如下这些:
|
|
在初始化时,需要通过如下命令初始化对模拟器的下载,比如要下载最新的 2.5 版的 Release 版:
后面同样通过 repo sync
命令下载整个源码树。
可以将模拟器源码分支理解为特殊的 Android 源码分支。
Android 模拟器编译
得到了 Android 模拟器的源码之后,进入下面的文件夹:
执行如下命令编译源码:
其中的 --no-tests
告诉编译系统,编译完成之后不要执行测试程序,以节省时间,提高效率。
编译完成之后,产生的模拟器可执行文件及库文件都位于 external/qemu/objs/
目录下:
后面就可以像执行 SDK 中的模拟器那样,执行我们编译的模拟器了:
Android 模拟器调试
要想调试 Android 模拟器,就需要生成带有调试符号等信息的可执行文件和库。这需要对我们前面执行的编译脚本程序 rebuild.sh
做一点微小的修改,在这个文件中会调用 android/configure.sh
程序来多编译过程做配置:
默认情况下,这个配置程序生成的配置文件,指导编译过程生成不含调试符号信息的可执行文件和库。但可以为 android/configure.sh
程序的执行加上 --symbols
以生成带有调试符号信息的可执行文件和库。
rebuild.sh
修改之后,大概就像下面这样:
修改之后,重新进入 external/qemu/android/
目录下并执行 rebuild.sh
。
这次将产生带有调试符号信息的可执行文件和库文件,这些文件位于 external/qemu/objs/build/debug_info
目录下:
原来不带调试符号信息的文件依然位于 external/qemu/objs/
目录下。
然后就可以通过 GDB 来调试带符号信息的可执行文件和库了。进入 external/qemu/objs/build/debug_info
目录下,执行如下命令:
该命令用于加载可执行文件。随后,在 GDB 的调试会话中,为可执行文件设置命令行参数,并设置端点:
需要注意的是,为一个类函数设置端点时,需要带上它的命名空间。
然后启动可执行程序:
随后在程序执行到我们加端点的位置时,程序将被断下来。
打赏
Done.