android-编译文件详细描述

这部分内容可以看:http://blog.csdn.net/huangyabin001/article/details/36383031
这里只补充这几点:

  1. 定义一款定制设备需要涉及如下几个脚本:
    vendorsetuup.sh
    AndroidProducts.mk
    BoardConfig.mk
    Android.mk
    上面的博客也说到,这里补充一下:
    vendorsetup.sh是在envsetup.sh中被调用的。
    Android是最后才被main.mk调用的,换句话说,前面的步骤都是在决定选择”什么产品”以及“产品的属性”,而最后才考虑该产品的“零件”组成,每个“零件”都是由一个Android.mk描述,比如我们生产一台电视机,先是通过读取配置来获知电视的具体属性(大小尺寸,是否LCD),最后才是考虑他的具体”零件”组成。

    • 列表内容
  2. Android.mk中常用的重要变量

变量名 说明
LOCAL_PATH 用于确定源码所在的目录,最好把他放在CLEAR_VARS变量引用的前面,因为它不会被清除,每个Android.mk只需要定义一次即可。
CLEAR_VARS 它清空了很多以“LOCAL_”开头的变量(LOCAL_PATH除外)。由于所有的Makefile都是在一个编译环境中执行的,因此变量的定义理论上都是全局的,每个模块编译开始前惊喜清理工作是必要的
LOCAL_MODULE 模块名,需保证在整个编译系统中是唯一存在的,而且中间不可以有空格
LOCAL_MOUDLE_PATH 模块的输出路径
LOCAL_SRC_FILES 模块编译过程所涉及的源文件,如果是java程序,可以考虑调用all-subdir- java-files来一次性添加目录(包括子目录)下所有的java文件,因为有LOCAL_PATH,这里只需要给出文件名(相对路径)即可,而且编译系统有比较强的推导功能,可以自动计算依赖关系
LOCAL_CC 用于指定C编译器
LOCAL_CXX 用于指定C++编译器
LOCAL_CPP_EXTENSION 用于指定特殊的C++文件后缀名
LOCAL_CFLAGS c语言编译时的额外选项
LOCAL_CXXFLAGS C++语言编译时的额外选项
LOCAL_INCLUDES 编译C和C++程序所需要的额外头文件
LOCAL_STATIC_LIBRARIES 编译所需的静态库列表
LOCAL_SHARED_LIBRARIES 编译所需的共享库列表
LOCAL_JAVA_LIBRARIES 编译时所需的JAVA类库
LOCAL_LDLIBS 编译时所需的链接选项
LOCAL_COPY_HEADERS 安装应用程序时所需复制的头文件列表,需要和LOCAL_COPY_HEADERS_TO变量配合使用
LOCAL_COPY_HEADERS_TO 上述头文件列表的复制目的地

你可能感兴趣的:(android-编译文件详细描述)