在整个aosp 目录下 执行如下命令
source build/envsetup.sh
lunch // 出现的代码序号根据自己的手机型号代号来选择
make // 如果执行或 make -j16 ,就不需要再执行 make
mmm development/tools/idegen/ //mmm 命令就是编译整个 idegen 目录
development/tools/idegen/idegen.sh //执行这个脚本
说明:
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
当然我们这里用神器 idegen,通过它我们可以用Android Studio阅读整个系统源码,非常方便。话不多说直接来看怎么使用idegen,导入系统源码到Android Studio。
注:上面的编译命令以实际的系统编译命令为准
依次执行完上面的命令,就会在系统根目录下生成如下文件
.classpath (Eclipse)
android.ipr (IntelliJ / Android Studio)
android.iml (IntelliJ / Android Studio)
我是用 Android Studio导入源码,所以我们只需要选择android.ipr这个文件即可。导入前先设置 一下Android Studio ,
第一步:
在 linux 中安装 Android Studio
找到Android Studio的安装路径中的vmoptions文件并打开:”Android Studio Path”/bin/studio.exe.vmoptions或者studio64.exe.vmoptions
添加
-Xms748m
-Xmx748m
第二步:
打开Android Studio,选择File->Open
弹出路径选择框,输入相应的源码根路径,然后选择android.ipr文件,就开始导入源码啦。在导入过程中,需要等待索引的建立相关的关联,大概需要花10~20分钟。
第三步:
当我们导入完源码后,我们就可以查看整个系统的源码啦,但是我们在跳转公共的类时,并没有跳转到frameworks目录下对应的源码类,而是jar包中的类,这不是我们想要的,我们需要让其跳转到相应的类中。我们就需要新建一个没有任何jar库的SDK给到系统源码项目的依赖。
那我们要怎么创建一个没有jar的SDK呢?步骤如下:
右键项目名->Open Module Settings->Project->New(JDK)
然后选择SDKs->编辑刚刚添加的jdk->删除Classpath目录下的所有包并命名为1.8(No Libraries)
再选择Modules->Module SDK选择刚刚编辑的SDK(1.8(No Libraries)),并删除下面所有的包。
大功告成,完成上面的步骤后,公共的类就直接指向系统的源码啦。