编译完 aosp 源代码后,不要急着导入,否则就出现下图的情况:
Android Studio 导入 Framework 源码后由于没有关联,所以阅读不顺。
我们需要在导入 Android Studio 之前先做这么几步:
第一步:在 make 完源码之后,执行这几部命令
source build/envsetup.sh
lunch [整编时选择的参数或者数字]
mmm development/tools/idegen/
这样,就会在目录:
out/host/linux-x86/framework/idegen.jar
生成 idegen.jar 文件,方便第二步的文件构建
第二步:执行下面命令生成 android.iml 和 android.ipr 两个编译所需文件
sudo development/tools/idegen/idegen.sh
修改二者的属性为可读写,方便更改第三步中的配置文件
执行下方命令即可
sudo chmod 777 android.imlsudo chmod 777 android.ipr
第三步:修改 android.iml 中 excludeFolder 配置,排除不需要看的源码,这样能快速构建项目,当然此步骤可以根据电脑性能可选。
查看下我们 aosp 目录
可以先把除 framework 的目录都排除掉,当然后续也可以通过
Android Studio 对排除的文件夹进行调整。
打开 android.iml 文件,搜索 excludeFolder,然后添加如下配置即可,可替换可以“追加”,我选择的“追加”
追加的内容是
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/compatibility" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/packages" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" /<excludeFolder url="file://$MODULE_DIR$/system" /><excludeFolder url="file://$MODULE_DIR$/test" /><excludeFolder url="file://$MODULE_DIR$/toolchain" /><excludeFolder url="file://$MODULE_DIR$/tools" />
第四步:用 Android Studio 导入
导入了将近 10 分钟
然后,我们配置下 jdk 和 sdk
创建一个新的 jdk 文件夹,起名是1.8(aosp)名字随意
删除 classpath 下方的所有 jar 文件
然后,选择编译好的 aosp 对应的版本,我的 asop 是 8.1 对应的 API 版本就是 27,然后将 Java SDK 的选项调整为 1.8(aosp)即可
然后调整 sdk 为对应版本的 sdk。
第四步:修改 Android 工程配置
切换到 Modules 选项,修改右侧的路径,改为 framework 目录下,如图
然后点 Apply,回到主页面后
点击 Add Configration
再点击 + 号按键
选择 Android App
然后修改红框内的选项改为 noting
确定后,我们就得到了一个可以调试 Framework 的 Module
第五步:调试源码
此时不要直接调试 module,我们先给我们想要看的源码的位置打上断点,调试启动后打也是可以的。
我们知道 Activity 的启动是需要 AMS 调用 ActivityStarter 的
startActivityMayWait()
所以我们可以先在该方法打断点:
然后点击
Run –> Attach Debugger to Android Process
即
然后弹窗中选择 system_process
确定后,Android Studio 中就会出现 Debug 的工具栏:
此时,我们手动点击打开任何一个应用,比如打开「电话」应用,此时就会进入调试阶段:
然后就可以愉快(ku bi)的看源码了。
本文暂时没有评论,来添加一个吧(●'◡'●)