Android系统源码阅读姿势
文章目录
记录几个Android系统源码的阅读方式。
Android Studio IDE (推荐)
Android源码目录development/tools/idegen,在源码编过的前提下,可以为IDE生成项目文件。
生成配置文件
mmm development/tools/idegen/ #编译idegen模块,生成idegen.jar development/tools/idegen/idegen.sh #生成ipr、iml等配置文件 # 若源码未编过, 尝试直接复制一个idegen.jar, 再执行生成配置文件的命令
调整导入配置
通过修改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 打开生成的android.ipr文件
配置源码依赖项,正确跳转
- 删除Project Settings/Modules/Android/Dependence下的配置项,只保留
和Android API; - 删除Project Settings/Platform Settings/SDKs/Android API XX/Classpath和Sourcepath下的项目,再重新添加源码中的frameworks和external等文件夹;
- 删除Project Settings/Modules/Android/Dependence下的配置项,只保留
Source Insight
在Windows平台上可以使用Source Insight。
ssh+vim
若是源代码放在远程服务器,在Windows上挂载为网络驱动器,直接用Android Studio查看,会出现必定蓝屏的bug,一个简单的解决方案就是直接用ssh+vim了。
线上阅读
- androidxref
- 只有Android的源码,更新较及时,已经有Oreo - 8.0.0的源码。
- grepcode
- 包含了Android、Hadoop等源码;
- 似乎已经凉了;
- androidos
- 小众,只有Android的源码,包含了Oreo - 8.0.0_r4源码。