• Android 的编译环境


    一、android 的build系统

    android build系统可以分成三大块:
    build/core 目录下,系统的框架和核心
    device 目录,具体产品的配置文件
    android.mk 各个模块的编译文件

    **android 5.0 的build 系统开始支持64位系统。

    android build 系统核心
    build/core 目录下有几十个mk 文件以及一些shell脚本和perl脚本,构成了android build系统的基础和框架。编译命令有以下三个。
    . build/envsetup.sh 建立android 编译环境
    lunch 打印菜单让用户选择需要编译的模块。
    make 编译系统

    envsetup.sh 文件的作用
    结尾会在device和vendor目录下搜索所有vendorsetup.sh文件的内容。device/lge/hammerhead下存在。

    android 的编译命令

    lunchlunch- 指定当前编译的产品。
    tapas
    croot
    m编译整个源码,但是不用将当前目录切换到源码的根目录。
    mm编译当前目录下的所有模块,但是不编译它们的依赖模块。
    mmm编译指定目录下的所有模块,但是不编译它们的依赖模块
    mma编译当前目录下的所有模块,同时编译它们的依赖模块。
    mmma编译指定目录下的所有模块,同时编译它们的依赖模块。
    cgrep对系统所有的C/C++文件执行grep命令。
    ggrep对系统所有的本地的Gradle 文件执行grep命令。
    jgrep对系统所有Java 文件执行grep文件。
    resgrep对系统所有xml目录下的 XML文件执行grep命令。
    sgrep对系统中所有源文件执行grep命令。
    godir

    lunch命令的功能
    执行完lunch命令后,系统会打印出当前配置所生成的环境变量。这些环境变量将会影响编译过程。

    PLATFORM_VERSION_CODENAME=REL 平台版本名称,通常是AOSP(android open source project)
    PLATFORM_VERSION=6.0.1 android平台版本号
    TARGET_PRODUCT=leaderphone16 所编译的产品名称
    TARGET_BUILD_VARIANT=userdebug 编译的产品类型(eng、user、userdebug)
    TARGET_BUILD_TYPE=release 编译的类型(release、debug)
    TARGET_BUILD_APPS=  编译android系统时,这个变量的值为null。使用build系统编译单个模块时,这个变量的值是所编译模块的路径。
    TARGET_ARCH=arm64 编译目标的cpu架构
    TARGET_ARCH_VARIANT=armv8-a 编译目标的cpu架构版本
    TARGET_CPU_VARIANT=kryo 编译目标的cpu代号
    TARGET_2ND_ARCH=arm 编译目标的第二cpu架构
    TARGET_2ND_ARCH_VARIANT=armv7-a-neon 编译目标的第二cpu架构版本
    TARGET_2ND_CPU_VARIANT=cortex-a53 编译目标的第二
    HOST_ARCH=x86_64 编译平台的架构
    HOST_OS=linux 编译平台使用的操作系统
    HOST_OS_EXTRA=Linux-4.2.0-42-generic-x86_64-with-Ubuntu-14.04-trusty 编译平台操作系统的一些额外信息,包括内核版本号、产品名称、代号等
    HOST_BUILD_TYPE=release 
    BUILD_ID=MMB29M Build_id的值会出现在编译的版本信息中,可以利用这个环境变量来定义公司特有的标识
    OUT_DIR=out 指定编译结果的输出目录
    

    修改 BUILD_ID的值
    make BUILD_ID = “Android L”

    **make命令会调用build/目录下的Makefile文件。
    他的内容如下 include build/core/main.mk

    Makefile文件
    Makefile文件主要有三种内容构成:变量定义,函数定义、目标依赖规则。

  • 相关阅读:
    计算机毕业设计SSM电子商务网站【附源码数据库】
    【无线电力传输】12 V 直流风扇无线电力传输系统的实现(Simulink)
    open vswitch源代码解析(二)flow table解析函数入口ovs_flow_tbl_lookup_stats
    51单片机中断和定时的结合应用
    vue_router_webpack_imported_module_0__.define is not a constru
    将ESP工作为AP路由模式并当成服务器
    TDengine 入门教程⑧——数据库管理工具 | DBeaver 连接 TDengine
    LVS负载均衡集群
    Vue源码阅读笔记—— 数组是如何做到响应式的
    Spring Cloud【SkyWalking日志、SkyWalking告警 、Skywalking自定义告警规则】(十五)
  • 原文地址:https://blog.csdn.net/Jun_P/article/details/127037710