[toc]

1. 编译Android源码

1
2
3
source build/envsetup.sh    
lunch sdk_phone_x86_64
make -j56

sdk_phone_x86_64是Android Emulator(AVD模拟器)的编译目标。

2. 搭建源码环境

idegen: 生成 IDE 相关文件

AOSP原生提供了idegen工具用于生成IDE环境(IDEA以及基于其的Android Studio)下的工程:

1
2
3
soruce build/envsetup.sh  
mmm development/tools/idegen/
./development/tools/idegen/idegen.sh

以上 3 个步骤的含义依次如下:

1
2
3
Step 1: 用于初始化环境变量
Step 2: 生成文件out/host/linux-x86/framework/idegen.jar
Step 3: 源码根目录生成文件android.ipr(工程相关设置), android.iml(模块相关配置)

导入到Android Studio

Android Studio打开前面生成的 android.ipr 文件即可

(a) 加载前配置文件提速:

打开android.iml文件,有大量 excludeFolder和source标签。根据自身需求和目标,删除或注释掉掉不感兴趣的source,可以让IDE不解析这些目录,可以避免对机器带来性能负担

(b) 加载后设置模块源码目录:

在Android Studio中Project Structure -> Modules, 可快速去除某些模块, 其中红色代码 Exclueded 选项 (即代表已删除的目录), 如下图:

将目录设置为source或Excluded等同于控制上述的iml文件。

配置源码正确跳转

Framework内实现了Android SDK的代码。但是Android Studio默认跳转到SDK而不是Framework,需要移除工程中默认使用的SDK,才能让跳转跳入Framework的源码

点击File菜单下的Project Structure

Step 1 新建 JDK

Project Structure -> SDKs, 新建 JDK(None), JDK使用Android Studio自带或系统内置即可。删除其 classpath 和 SourcePath 的内容,即删除Android Studio自带SDK,这样不再跳转进入SDK,而是进入我们导入的Framework。

Step 2 配置 SDK

Project Structure -> SDKs, 选中Android API 25 Platform, 然后选择其 Java SDK 为前面新建的JDK(None)

Step 3 选择 SDK

Project Structure -> Project -> 选中 Project SDK, 选择前面的Android API 25 Platform

Step 4 建立依赖

Project Structure -> Modules -> android -> Dependencies: 先删除 Android API 25 Platform 之外的所有依赖, 然后点击下图绿色的+号来选择Jars or directories,将 frameworks 添加进来, 也可添加其他所关注的源码;

下图便是添加后的结果图: