编译过程,先获取到源码。由于是和瑞芯微合作,直接从他们那边拿的源码,搭建过程大同小异。但由于本人是新人菜鸟,在linux上走了些弯路。

首先是文件的处理,.tar.gz格式的压缩包,一共有10个,首先需要将他们合并为一个文件,合并解压,但由于中间包含了pdf格式文档,故解压失败。解压语句将pdf排除即可(正则表达式);

解压完成之后,按照Android编译步骤走,首先编译环境初始化,其次选择编译目标,最后执行编译。中间缺少什么会有相应提示,一般安装即可。其中这些操作需要在对应路径之下。这和windows不同,linux只有在正确路径下操作才有效。否则会提示一系列无法打开文件或没有该目录;

编译步骤前两步基本没有可变的地方,编译目标选自己需要的,不选会是默认第一项。第三项编译的时候,可以自选线程数。make -j16或者make -j8。

遇到的最大的问题是内存问题。由于是在windows里面搭建的ubuntu,本身也没有多少空间。内存分配了25G,所以开了swap。Android编译成功的时候,swap是30个G左右。但是全编译之后,就卡住不动了,还需要再加大。遇到内存问题的时候,编译不会报错,一般就是卡在某一个点不动。我卡的地方是收集所有的ninja文件进行编译的时候,如图所示。加大内存既可以解决。有条件的话,想直接在ubuntu里面进行Android的编译,享受一把奢侈极速的体验;

android o版本编译 编译android11_Android


最后留个小尾巴,虽然编译是通过了。但是我看Android的工具链当中有一个kati,用于将Android.mk转换为Ninja文件。但是我查看我的源码里面的时候,并没有在相应目录下找到这个工具。11已经将Android.mk全部替换为Android.bp了吗?

Android10的工具链里面其中两个Soong,blueprint都是由Go语言编写。至于Ninja核心是C/C++,部分辅助python,shell。