zoukankan      html  css  js  c++  java
  • 第二章:Android的编译环境build系统

    2.0 build简介

    • Android的build系统基于GNU Make 和shell 构建的一套编译环境。这套系统定义了大量的变量和函数,无论编写一个产品的配置文件还是一个模块的Android.mk文件,都不用直接和GNU Make打交道,只需要理解Android提供的编译变量和函数,就能够方便的将我们开发的模块加入到Android的build体系中。
    • Android系统build分类:
      1、build/core 目录下的文件,这是Android Build的系统框架核心;
      2、device目录下的文件,存放的是具体的产品配置文件;
      3、各个模块的编译文件:Android.mk,位于模块的原文件目录下。

    2.1 Android Build系统核心

    • Android Build系统核心在目录buil/core,这个目录中有mk文件、shell脚本和per脚本,他们构成Android Build系统的基础和架构。
    • 编译Android系统常用命令:
    $source build/envsetup.sh
    $lunch
    $make

    2.1.1 编译环境的建立

    1. envsetup.sh 文件的作用

    执行Android系统的编译,必须先执行envsetup.sh脚本,这个脚本会建立Android的编译环境。其具体执行的是建立shell命令以及调用add_lunch_combo命令,这个命令的将调用该命令的所传递的参数存放到一个全局的数组变量LUNCH_MENU_CHOICES中。执行lunch时打印的正是这个数组的内容。
    envsetup.sh脚本中定义的常用shell命令:

    命令 说明
    lunch 指定当前编译的产品
    croot 快速切换到源码的根目录,方便开始编译
    m 编译整个源码,但不用讲当前的目录切换到源码的根目录
    mm 编译当前目录下的所有模块,但是不编译他们的依赖项
    cgrep 对系统中所有的C/C++文件执行grep命令
    sgrep 对系统中所有的源文件执行grep命令

    2 lunch命令的功能

    lunch命令如果没有参数,系统会打印出产品的列表供选择。lunch的参数格式:

    <product_name>-<build_variant>
  • 相关阅读:
    【BZOJ 2844】: albus就是要第一个出场
    BZOJ 2631: tree
    BZOJ1798: [Ahoi2009]Seq 维护序列seq
    Link-Cut Tree指针模板
    bzoj 4916: 神犇和蒟蒻 (杜教筛+莫比乌斯反演)
    【BZOJ 3561】 DZY Loves Math VI
    linux 安装php7.2 以及配置laravel环境(public目录下)
    composer 配置 切换中国镜像
    phpstorm composer 提示php 版本过低的问题调整
    如何在阿里云的虚机 部署laravel项目
  • 原文地址:https://www.cnblogs.com/zcjboke/p/5514553.html
Copyright © 2011-2022 走看看