实习的主要工作是android framework层的编译和定制,下面就简单得记录一下相关命令和其意义。
源码的文件结构
公司的源码下有两个文件,一个是android文件夹,一个是lichee,其中android是代码文件,是android定制的核心,lichee是全志科技芯片内核,其实也就是linux的内核。
编译内核
lichee文件夹下,有build.sh的脚本,主要内容是对kernel内核的编译,out目录下会产生已选择相应的img,之后在android编译的时候则会直接从中拷贝进行编译。
编译android
编译之前,会执行source build/envsetup.sh
和lunch
命令,其中lunch会跟一个参数表示产品的型号和eng,userdebug之类。
之后运行extract-bsp
,extract-bsp是一个脚本函数,在device/softwinner/common/vendorsetup.sh 他也是在lunch的时候被执行的,也就是说如果先不执行lunch ,extract-bsp是无效的。这个脚本的主要作用是将lichee编译的结果输出到device/softwinner/vendor目录下
打包IMG
上面的extract-esp
执行完之后,则可以运行make -jn
(n根据电脑的配置选择,我用的是16),第一次编译的过程非常久,大概1-2个小时左右。编译结束后,会在out文件夹下生成很多的img文件这也是为我们的打包做准备。
最后执行pack
命令,进行打包,运行结束之后,最后会在lichee/tools/pack目录下,一般格式是sun8xxx_android_yourname_uart0.img(其中yourname是自己取的名字)。
生成的img文件就可以进行固件的烧录了,烧录的方式由硬件商提供,在此不再描述。