摘要
在之前的文章Android MacOs 下的源码下载及编译中介绍了源码下载以及编译的方法,本文介绍如何把下载编译好的源码导入Android Studio,并且可以进行代码调试
[toc]
前提
已经成功的下载并编译出了Android的某个版本
开始
先修改Android Studio 支持的内存上限,因为android 源码是是否巨大的,找到Android Studio的根目录,更改bin子目录下的studio.vmoptions文件
| 1 | --Xms1024m | 
生成支持导入的文件
android源码编译成功后,看看有没有out/host/linux-x86/framework/idegen.jar文件生成,如果没有执行以下命令生成一个:1
2
3
4
5source build/envsetup.sh
lunch
输入之前编译源码时采用的那个编号,我的是5
再运行下面的命令
mmm development/tools/idegen/
我执行上面的命令的时候报错如下:
build/core/config.mk:692: error: Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly.
出现这个错误是因为JDK环境没有配置成功,Mac自带的Java没有tools.jar这个文件,
将自己安装的Java添加到PATH即可,运行如下命令可以快速查看用户安装的JDK目录:1
/usr/libexec/java_home -V
输出:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home,这正是我的JDK安装目录,将其加入到PATH,加入后再次运行命令mmm development/tools/idegen/,看到如下输出1
#### build completed successfully (02:18 (mm:ss)) ####
就会生成out/host/linux-x86/framework/idegen.jar,然后在根目录执行:1
development/tools/idegen/idegen.sh
我这边执行这个命令花的时间比较长
| 1 | Read excludes: 27ms | 
该命令执行后,会在根目录下生成如下两个文件:
- android.iml,用来描述modules。它包括modules路径、 依赖关系,顺序设置等。一个项目可以包含多个 *.iml 文件。
- android.ipr,一般保存了工程相关的设置,比如modules和modules libraries的路径,编译器配置,入口点等
 到上面这一步其实就可以将源码导入到Android Studio了,但为了优化导入速度(不优化的话导入的时间会相当长),请接着往下看优化导入的速度修改android.xml文件,找到excludeFolder标签,加入如下内容然后再开始导入。1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29<excludeFolder url="file://$MODULE_DIR$/.repo"/> 
 <excludeFolder url="file://$MODULE_DIR$/abi"/>
 <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/>
 <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$/kernel-3.18"/>
 <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$/pdk"/>
 <excludeFolder url="file://$MODULE_DIR$/platform_testing"/>
 <excludeFolder url="file://$MODULE_DIR$/prebuilts"/>
 <excludeFolder url="file://$MODULE_DIR$/rc_projects"/>
 <excludeFolder url="file://$MODULE_DIR$/sdk"/>
 <excludeFolder url="file://$MODULE_DIR$/system"/>
 <excludeFolder url="file://$MODULE_DIR$/tools"/>
 <excludeFolder url="file://$MODULE_DIR$/trusty"/>
 <excludeFolder url="file://$MODULE_DIR$/vendor"/>