AndroidStudio导入系统源码
如果我们修改系统源码使用普通的文本编辑器,效率不高。我们熟悉使用AndoridStudio,知道各种快捷键,如果使用AndroidStudio导入源码的话,我们编辑和阅读代码的效率会大大地提高。
idegen模块编译
如果想知道系统编译步骤的同学可以去看我们的AOSP的课程
- 设置环境变量
source build/evnsetup.sh
当然,有些公司代码是直接有自动化脚本的,就看看是哪一个,参数是啥。但本质是一样的,先是要设置好编译环境。
选择好目标版本,这个如果是公司的自动化编译脚本,会让你输入的,或者有特定的配置文件
launcher xxxx
如果以上这个步骤不知道的,可以去看看AOSP的课程。
- idegen模块编译
mmm development/tools/idegen
接着就会在development/tools/idegen
目录下生成idegen.iml
和idegen.ipr
- 执行
intellij-gen.sh
脚本
cd development/tools/idegen
./idegen.sh
回到源码的根目录croot
就可以看到有android.mpr
和android.iml
两个文件了
修改代码导入配置
如果我们直接导入的话,会花比较多的时间,有很多代码我们是不看的。
通常来说我们看frameworks的源码和packages里的应用源码,做低层开发的比较多使用Sourceinsight
或者直接用文本编辑器。
所以我们修改一下android.iml
的配置
可以把以下exclude
内容添加到android.iml
的exclude
段中
<excludeFolder url="file://$MODULE_DIR$/./external/emma" />
<excludeFolder url="file://$MODULE_DIR$/./external/jdiff" />
<excludeFolder url="file://$MODULE_DIR$/out/eclipse" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/external/bluetooth" />
<excludeFolder url="file://$MODULE_DIR$/external/chromium" />
<excludeFolder url="file://$MODULE_DIR$/external/icu4c" />
<excludeFolder url="file://$MODULE_DIR$/external/webkit" />
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
<excludeFolder url="file://$MODULE_DIR$/out/host" />
<excludeFolder url="file://$MODULE_DIR$/out/target/common/docs" />
<excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates" />
<excludeFolder url="file://$MODULE_DIR$/out/target/product" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<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$/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$/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" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/chipram" />
<excludeFolder url="file://$MODULE_DIR$/compatibility" />
<excludeFolder url="file://$MODULE_DIR$/u-boot64" />
<excludeFolder url="file://$MODULE_DIR$/u-boot15" />
<excludeFolder url="file://$MODULE_DIR$/vendor" />
<excludeFolder url="file://$MODULE_DIR$/sign_modem" />
<excludeFolder url="file://$MODULE_DIR$/scripts" />
<excludeFolder url="file://$MODULE_DIR$/projects" />
后面我们也可以通过手动去exclude掉,在android studio里头。
源码导入
打开android stduio,打开项目
然后打开,此时需要一定的时去索引代码。
怎么控制哪些是排除的呢?第一种方法是可以像前面一样,我们修改android.iml文件
,另外我们可以打开项目配置
如上图就可以exlude掉,红色的为已经排除的了,蓝色的是包含的。
至于怎么调试系统的源码,我们下一篇文章再说吧。
源码阅读和修改
跟android项目差不多了,侧栏就可以看到各种源码,我们快捷键也可以使用。
比如说我查找类
我打开frameworks里的文件
相比于用linux命令行去搜索和使用VI编辑器,我觉得使用android studio会比较方便一点。