开始之前,先要准备一份已经编译过的Android源码,
同时,你得安装配置了Android Studio(下载地址http://www.android-studio.org/)
1、编译源码idegen模块及生成AS配置文件(*.ipr)
首先进入源码目录,执行如下指令
mmm development/tools/idegen/
当出现如下语句,说明编译OK了
......
#### make completed successfully (7 seconds) ####
接着执行
development/tools/idegen/idegen.sh
这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。当出现如下语句,说明OK了
Read excludes: 21ms
Traversed tree: 194799ms
此时根目录下就出现了android.ipr、android.iml文件。
接着修改android.iml文件,将自己不用的代码过滤掉。想想,如果我们就这么直接导入,会把所有的源码模块导入到Android Studio中,这会很慢的,如果你的电脑配置不好,可能会直接假死。所以我们最好过滤一下我们不需要的源码文件,只导入我们需要的模块。
比如只要看frameworks的代码,打开android.iml文件,加入如下代码
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<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$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/ndk" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/packages" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
到此,配置已经完成,下面开始导入代码到Android Studio
2、Android Studio导入源码
linux下启动Android Studio是使用命令启动,命令如下:
#首先确保在android-studio目录下执行
$ bin/studio.sh
选择Android.ipr
等几分钟,就导入完成了
此时代码已经导入完成了。但是这时候如果你打开一个Service.java类,然后把鼠标放在其中任意方法的Intent参数上按住CTRL+鼠标左键跳转到Intent类你会发现跳转过去的是一个Intent.class文件,为啥呢?因为他跳转的是你的默认SDK中的jar内部的class文件。既然要修改查看整套源码,这么跳转得多蛋疼啊,所以我们需要配置让其能跳转到Intent.java文件,具体做法如下:
首先删掉依赖中的所有依赖,只保留下图中没被选中的那两个(当然你可以选择保留一些你用到的其他jar),如下:
接着点击加号的JARs or directories将你源码的frameworks及external和你用到的其他跳转目录添加到依赖中,然后apply即可。
搞定后,可能会遇到如下报错
解决方法是
复制出现红色字体的路径。。。
File - Settings - schemas and DtDs
点击加号。把路径考进去就可以了