Android编译大全(六)

摘要:
Droid是默认目标名称。2makeall:makeall将生成makedroid将编译的所有项目。同时,LOCAL将被编译_ MODULE_TAGS定义不包含android标记的模块。这将确保所有模块与Android兼容。mk文件位于代码树中。类似于:rm–rf/out/2makeclobber:删除所有配置编译和输出的结果文件。类似于:rm–rf/out/2使数据干净:使数据干净并删除当前组合目录中数据目录的内容。这在模拟器上特别有用,在模拟器中,持久数据仍然存在于建筑物之间。2制作show命令:脚本命令在编译时显示,而不是编译简报。2makeLOCAL_MODULE:编译一个单独的模块。

6.2. makefile文件
控制整个android系统编译的make文件。其内容如下:

### DO NOT EDIT THIS FILE ###

include build/core/main.mk

### DO NOT EDIT THIS FILE ###

 

可以看出,实际上控制编译的文件是:build/core/main.mk

6.3. Make命令
2  make droid:等同于make命令。droid是默认的目标名称。

2  make all:  make all将make所有make droid会编译的项目。同时,将编译LOCAL_MODULE_TAGS定义的不包括android tag的模块。这将确保所有的在代码树里面同时有Android.mk文件的模块。

2  clean-$(LOCAL_MODULE)和clean-$(LOCAL_PACKAGE_NAME):

删除某个模块的目标文件。例如:clean-libutils将删除所有的libutils.so以及和它相关的中间文件;clean-Home将删除Home应用。

2  make clean:删除本次配置所编译输出的结果文件。类似于:rm –rf ./out/ <configuration>

2  make clobber:删除所有配置所编译输出的结果文件。类似于:rm –rf ./out/

2  make dataclean:make dataclean deletes contents of the data directory inside the current combo directory. This is especially useful on the simulator and emulator, where the persistent data remains present between builds.

2  make showcommands:在编译的时候显示脚本的命令,而不是显示编译的简报。用于调试脚本。

2  make LOCAL_MODULE:编译一个单独得模块(需要有Android.mk文件存在)。

2  make targets:将输出所有拟可以编译的模块名称列表。

 

注:还有一些命令,从make文件里面应该可以找到。本文不做探讨。

6.4. build/core/config.mk
config.mk文件的主要内容如下:

Ø  头文件的定义;(各种include文件夹的设定)

在定义头文件的部分,还include了pathmap.mk,如下:

include $(BUILD_SYSTEM)/pathmap.mk

该文件设置include目录和frameworks/base下子目录等的信息。

Ø  编译系统内部mk文件的定义; <Build system internal files>

Ø  设定通用的名称;<Set common values>

Ø  Include必要的子配置文件;<Include sub-configuration files>

n  buildspec.mk

n  envsetup.mk

n  BoardConfig.mk

n  /combo/select.mk

n  /combo/javac.mk

Ø  检查BUILD_ENV_SEQUENCE_NUMBER版本号;

In order to make easier for people when the build system changes, when it is necessary to make changes to buildspec.mk or to rerun the environment setup scripts, they contain a version number in the variable BUILD_ENV_SEQUENCE_NUMBER. If this variable does not match what the build system expects, it fails printing an error message explaining what happened. If you make a change that requires an update, you need to update two places so this message will be printed.

·         In config/envsetup.make, increment the CORRECT_BUILD_ENV_SEQUENCE_NUMBER definition.

·         In buildspec.mk.default, update the BUILD_ENV_SEQUENCE_DUMBER definition to match the one in config/envsetup.make

The scripts automatically get the value from the build system, so they will trigger the warning as well.

Ø  设置常用工具的常量;< Generic tools.>

Ø  设置目标选项;< Set up final options.>

Ø  遍历并设置SDK版本;

 

免责声明:文章转载自《Android编译大全(六)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF设置样式的几种方式eclipse安装birt插件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

react 执行 yarn build ,无法直接打开dist文件下的index

如果你使用create-react-app创建项目,执行命令 yarn build 后,直接以静态方式打开build文件夹内的index.html,会看到页面显示出现问题,打开console后会看到js、css、svg等文件的路径出现问题。 解释: 在打包之前,在 package.json 中 private 下(位置任意)添加"homepage": "....

UCOSIII任务创建

UCOSIII任务创建: 首先要确保UCOSIII移植成功; 一般以下几个步骤就行了: 第一步:写好任务所需的 优先级、堆栈、控制块等; 然后顺便声明下任务函数; 第二步:开始创建函数 源码: 1 #include "led.h" 2 #include "delay.h" 3 #include "sys.h" 4 #include "usart.h"...

Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】

前言 因今年公司新产品线较多,为了降低耦合,达到业务分离、重用,提高内部开发效率的目的,采用了基于服务组件、前后端分离的架构体系。与之前传统单应用架构相比,系统部署、配置更加复杂,为了能够频繁地将软件的最新版本,及时、持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署。 环境准备 操作...

linux驱动开发(四) 字符设备驱动框架(自动创建设备节点)

代码如下 #include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/device.h...

Android.mk 文件语法详解

0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。 所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义。 Android.mk文件语法允许我们将Sou...

VSCode搭建node + typescript开发环境

我们一起来喜欢TypeScript 现在写js不用TypeScript,伦家可能会觉得你是外星人。 是的,TypeScript很大程度增强了代码的可读性,可跟踪性,可维护性和减少了bug。 那么没有理由不适用TypeScript进行js开发,但是回归本质,要根据实际出发,不是盲目的一来直接上TS。 我参与过一些使用TS开发的项目,也发现使用TS出现的问题...