4. Android编译过程及脚本分析

作者: 瑟闻风倾 | 来源:发表于2019-10-28 15:54 被阅读0次
    • 编译内核
      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根据电脑的配置选择,我用的是8),第一次编译的过程非常久,大概1-2个小时左右。编译结束后,会在out文件夹下生成很多的img文件这也是为我们的打包做准备。
      • 最后执行pack命令,进行打包,运行结束之后,最后会在lichee/tools/pack目录下,一般格式是sun8xxx_android_yourname_uart0.img(其中yourname是自己取的名字)。生成的img文件就可以进行固件的烧录了,烧录的方式由硬件商提供。

    1. android编译过程

    (1) 初始化参数设置(初始化编译环境):执行source build/envsetup.sh(加载指令和分支)
    (2) 检查环境变量并配置目标环境:lunch 命令
    (3) 选择 lunch:读取目标配置和平台信息
    (4) 清空输出目录:out目录清掉才能够重新编译
    (5) 执行编译:make -j16或make -j8
    (6) 生成升级包:使用打包程序生成升级包

    2. 编译过程及脚本分析

    编译过程简单脚本分析.png

    (1) .bulid/envsetup.sh 分析

    • 在源码目录下通过. bulid/envsetup.shsource bulid/envsetup.sh来执行envsetup.sh文件
      执行.png
      注意:将 source 替换成 .(一个点)可以省去一些字符,这种简写形式在文档中更为常用。
      说明:在源码目录下通过vi bulid/envsetup.sh命令来查看envsetup.sh文件,envsetup.sh文件内容如下(包括各种编译命令)。
      各种编译命令.png
      备注:只有执行过envsetup.sh文件后才可以把各种编译命令加载到终端上,之后才可以在终端使用各种编译命令。通过make命令可以编译整个android源码;mm指令编译当前目录(单独模块的编译);mmm指令就是用来编译指定目录(单独模块的编译);lunch指令设置编译目标,所谓的编译目标就是生成的镜像要运行在什么样的设备上。

    问题:执行.bulid/envsetup.sh命令时,做了什么事情?
    回答:执行.bulid/envsetup.sh命令时,做了加载编译命令加载平台信息(分支)两件事。加载编译命令后则可以在shell中使用envsetup.sh脚本文件中包含的各种编译命令,如下面所示的执行lunch命令获取所有的分支;加载平台信息后则可以获取对应的分支。

    (2) lunch 分析

    • 在源码目录下通过lunch命令来获取所有lunch(分支)
      获取所有lunch.png
    • 选择lunch(分支)


      选择并获取平台信息.png
    • 通过export命令来查看当前环境变量
      image.png

    问题:lunch做了什么?如何增加和删除一个lunch?
    回答:通过修改分支的源码来减少分支,通过复制分支并修改来增加分支。

    3. android源码编译

    备注:使用make命令make -j16make -j8进行源码编译。

    编译.png

    问题:如何使用android的编译命令编译单独的模块?
    回答:通过make命令可以编译整个android源码;mm指令编译当前目录(单独模块的编译);mmm指令就是用来编译指定目录(单独模块的编译)。

    相关文章

      网友评论

        本文标题:4. Android编译过程及脚本分析

        本文链接:https://www.haomeiwen.com/subject/fjxumctx.html