摘要
在之前的文章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"/>