Android源码分析之准备:Android Studio调试AOSP代码

导入Android Studio

Android Studio是阅读Android源码最合适的工具,并且还可以调试,AOSPidegen模块就提供了对Android Studio最好的支持。按照以下步骤,就可以将源码导入了:

编译idegen模块

mmm development/tools/idegen/

生成android.ipr

development/tools/idegen/idegen.sh

运行完成后会在根目录生成android.iprandroid.iml文件,这里android.ipr就是可以打开的项目,而android.iml可以用来配置加载哪部分文件,因为源码体积过于庞大,加载会很慢,而有很多部分是现在不需要研究的,可以仅关注FrameworkPackages部分,在此文件中加入以下几句:

























接下来就可以通过Android Studio打开了。

导入后出现的问题

The current inotify(7) watch limit is too low.

解决方法:

sudo vim fs.inotify.max_user_watches = 524288

sudo sysctl -p --system

然后重启Android Studio。

代码跳转到Jar

导入完成后,当我们进行代码的跳转时,跳转到的是从jar包反编译的*.class类,而不是源码中的类。

解决方法如下:

打开Project Structure,选择Project选项,将SDK设置为和源码版本一致,Android 7.0.0对应的SDK版本号是24,如下所示:

Android源码分析之准备:Android Studio调试AOSP代码_第1张图片
project

然后选择Modules选项,选择android->Dependencies,再点击右侧的+按钮,选择Jars or directories,将frameworksexternal目录添加进来,如下所示:

dependencies

然后选中所有的*.jar文件,然后点击右侧的向下箭头,点多次,直到它们位于最下方,如下所示:

Android源码分析之准备:Android Studio调试AOSP代码_第2张图片
dependencies

这样调整完毕之后,就可以跳转到正确的代码了。

调试Java代码

要调试代码,首先要打开模拟器,注意不是Android Studio自带的模拟器,而是通过编译后的代码启动的模拟器,否则可能出现代码不对应的问题。

直接运行emulator命令是无法启动的,执行方法如下:

source build/envsteup.sh

lunch 6 //和编译时对应

emulator

然后通过Run->Attach debugger to Android process,或者点击工具栏上的图标:

debugger

就会出现刚刚启动的模拟器了,在弹出的对话框中勾选Show all processes,就可以看到运行的全部进程:

Android源码分析之准备:Android Studio调试AOSP代码_第3张图片
processes

然后选择system_process,就可以进行调试了。

调试Native代码

因为目前研究重点在Java部分,这部分知识之后再补充~

上一篇:Android源码分析之准备:AOSP编译

下一篇:Android源码分析之App启动流程(一)

你可能感兴趣的:(Android源码分析之准备:Android Studio调试AOSP代码)