记录几个Android系统源码的阅读方式。

Android Studio IDE (推荐)

Android源码目录development/tools/idegen,在源码编过的前提下,可以为IDE生成项目文件。

  1. 生成配置文件

    mmm development/tools/idegen/   #编译idegen模块,生成idegen.jar
    
    development/tools/idegen/idegen.sh  #生成ipr、iml等配置文件
    # 若源码未编过, 尝试直接复制一个idegen.jar, 再执行生成配置文件的命令
    
  2. 调整导入配置
    通过修改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" />
    
  3. 导入Android Studio 打开生成的android.ipr文件

  4. 配置源码依赖项,正确跳转

    • 删除Project Settings/Modules/Android/Dependence下的配置项,只保留和Android API;
    • 删除Project Settings/Platform Settings/SDKs/Android API XX/Classpath和Sourcepath下的项目,再重新添加源码中的frameworks和external等文件夹;

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源码。

参考