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<product_name>-<build_variant> 指定当前编译的产品。
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文件主要有三种内容构成:变量定义,函数定义、目标依赖规则。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值