1、背景
安卓系统源码量很庞大,选择好的开发工具和方式去开发可以提升开发效率,常用的开发工具有Source Insight 、Visual Studio Code、Android Studio,vscode适合C和C++代码开发,java层代码无法跳转和提示,因此,涉及到java层的代码还是用as开发方便些,本文将介绍as集成Framework源码开发方式
2、编译出ipr
2.1 配置编译环境
//在源码根目录执行以下
source build/envsetup.sh
lunch kona-userdebug //这里可能不一样,例如 lunch 40 也可以,根据场景选择
2.2 编译idegen模块
mmm development/tools/idegen/ //生成文件 out/host/linux-x86/framework/idegen.jar
2.3 执行脚本生成ipr和iml文件
./development/tools/idegen/idegen.sh//博主这边执行上面命令后,生成的ipr文件在该目录:/development/tools/idegen/templates/android.ipr
//注:有可能每个人的不一样,可以在源码根目录通过以下命令搜索:find . -name android.ipr
将生成的android.ipr文件拷贝到源码根目录
3、将导入AndroidStudio
打开AS,点击File -> Open,选中前面拷贝到源码根目录下的android.ipr文件即可,该过程比较耗时。
android.iml文件
iml文件是idea组织工程的文件, 里面记录了各种记录模块, 文件夹以及依赖的信息。一般而言, 创建的工程都会有这个文件, 它的本质是一个工程组织文件, 和Maven的pom.xml, gradle的build.gradle, 等组织工程和处理依赖关系的文件并没有什么差别。
打开android.iml文件,我们会发现这个而文件配置项非常多,主要有类标签:
sourceFolder:表示包含的文件目录,通常我们只需要留下framewrok即可。
excludeFolder:exclude顾名思义就是不包含的意思。我们有很多目录直接就不想让Studio去管它,不管是索引还是什么等等,所以只需要将这些目录配置到中就好了。
如果已经把全部项目导入到Android Studio,又想删除怎么办,其实有一个简单的方法就是进入目录Project Structure -> Modules, 可快速去除某些模块, 其中红色代码Exclueded选项(即代表已删除的目录),我们只查看framework模块,所以其他模块的代码全部设置为 Exclueded,如下图:
选择左边的文件目录右击选择 Exclueded即可,如果加载的目录太大,将消耗很长时间去加载,建议用不上的目录直接屏蔽掉
4、open android.ipr加载缓慢和卡顿问题处理
4.1 取消加载git,采取手动同步代码的方式sync代码,如下图:
4.2 2.加大AS运行内存
5、linux中安装Android Studio,Window中访问编辑
如果window电脑配置不高,导入源码打开as后,电脑出现很卡现象,针对这种问题,博主介绍另外一种方法
5.1 寻找一台配置高的linux服务器
在服务器中安装linux版本的Android studio以及配置jdk环境
5.2 window中安装Xmanager ,博主安装的是Xmanager 7,用的是xshell7
5.3 windows 电脑上用xshell 连接访问服务器,然后在Android Studio 中,cd到android-studio/bin目录,执行 studio.sh脚本,即可打开Android Studio,然后导入android.ipr即可
注意:一般导入编译的iml文件和android.ipr文件即可源码跳转和提示,博主遇到了无法实现跳转的问题,就把之前生成的可跳转的iml文件和android.ipr文件拷贝到源码目录,就可以了,前提是源码和目录是一样的才行。iml文件中包含Android整个源码的内容路径,一般有一万多行以上,如果几十行,一般是有问题,没办法跳转和访问。