Android build系统中常用“LOCAL_” 变量
编写模块的编译文件,实际就是定义一系列以“LOCAL_”开头的编译变量,因此我们有必要弄明白这些变量的具体含义。下面是一些经常使用的LOCAL_编译变量的说明:
|
变量名 |
说明 |
|
LOCAL_ASSET_FILES |
编译APK文件时用于指定资源列表,通常写成 LOCAL_ASSET_FILES += $(call find-subdir-assets)。 |
|
LOCAL_CC |
自定义C编译器来代替缺省的编译器。 |
|
LOCAL_CXX |
自定义C++编译器来代替缺省的编译器。 |
|
LOCAL_CFLAGS |
定义额外的C/C++编译器的参数。 |
|
LOCAL_CPPFLAGS |
仅定义额外的C++编译器的参数,不用在C编译器中。 |
|
LOCAL_CPP_EXTENSION |
自定义C++源文件的后缀。例如:LOCAL_CPP_EXTENSION := .cc 注意:一旦定义,模块中所有的源文件都必须使用该后缀,目前不支持混合后缀。 |
|
LOCAL_C_INCLUDES |
指定头文件的搜索路径。 |
|
LOCAL_FORCE_STATIC_EXECUTABLE |
如果编译时候需要链接的库有共享和静态两者共存的情况。设定此变量值为true将会优先链接静态库。通常这种情况只会在编译root/sbin目录下的应用才会用到,因为他们执行的时间比较早,文件系统的其他部分还没有加载。 |
|
LOCAL_GENERATED_SOURCES |
指定由系统自动生成的文件列表。 |
|
LOCAL_MODULE_TAGS |
定义模块标签,Build系统根据标签决定哪些模块被安装。 |
|
LOCAL_REQUIRED_MODULES |
指定依赖的模块。一旦本模块被安装,通过此变量指定的模块也将被安装 |
|
LOCAL_JAVACFLAGS |
定义额外的javac编译器的参数 |
|
LOCAL_JAVA_LIBRARIES |
指定模块依赖的java共享库 |
|
LOCAL_LDFLAGS |
定义链接器ld的参数 |
|
LOCAL_LDLIBS |
指定模块链接时依赖的库。如果这些库文件不存在,并不会引发对它们的编译。这是此变量和LOCAL_SHARED_LIBRARIES的主要区别。 |
|
LOCAL_NO_MANIFEST |
在一个资源apk中可以指定此变量为true,表示此apk文件没有AndroidManifest.xml文件。 |
|
LOCAL_PACKAGE_NAME |
指定APP应用名称。 |
|
LOCAL_PATH |
指定Android.mk文件所在的目录。 |
|
LOCAL_POST_PROCESS_COMMAND |
在编译host相关的模块时,可以用此变量定义一条命令在link完成后执行。 |
|
LOCAL_PREBUILT_LIBS |
指定预编译c/c++动态和静态库列表。用于预编译模块定义中。 |
|
LOCAL_PREBUILT_JAVA_LIBRARIES |
指定预编译java库列表。用于预编译模块定义中。 |
|
LOCAL_SHARED_LIBRARIES |
指定模块依赖的c/c++共享库列表。 |
|
LOCAL_SRC_FILES |
指定源文件列表。 |
|
LOCAL_STATIC_LIBRARIES |
指定依赖的c/c++静态库列表。 |
|
LOCAL_MODULE |
除应用(apk)以LOCAL_PACKAGE_NAME指定模块名以外,其余的模块都以LOCAL_MODULE指定模块名。 |
|
LOCAL_MODULE_PATH |
指定模块在目标系统的安装路径。 |
|
LOCAL_UNSTRIPPED_PATH |
指定模块的unstripped 版本在out目录下的保存路径。 |
|
LOCAL_WHOLE_STATIC_LIBRARIES |
这个变量也是定义了模块依赖的静态库列表,和LOCAL_STATIC_LIBRARIES类似。但是通过这个变量定义,链接时链接器不会将静态库中无人调用的代码去掉。 |
|
LOCAL_YACCFLAGS |
指定yacc的参数。 |
|
LOCAL_ADDITIONAL_DEPENDENCIES |
指定本模块的依赖。用在不方便使用别的方法来指定依赖关系时。 |
|
LOCAL_BUILT_MODULE |
指定编译时存放中间文件的目录。 |
|
LOCAL_INSTALLED_MODULE |
指定模块的安装路径。 |
|
LOCAL_MODULE_CLASS |
定义模块的分类。根据分类,生成的模块文件会安装到目标系统相应的目录下。例如:APPS:安装到/system/app下;SHARED_LIBRARIES:安装到/system/lib下;EXECUTABLES:安装到/system/bin下;ETC:安装到/system/etc下;但是如果同时用LOCAL_MOULE_PATH定义了路径,则安装到该路径。 |
|
LOCAL_MODULE_NAME |
指定模块的名称。但是目前系统中用到它的实例。 |
|
LOCAL_MODULE_SUFFIX |
指定当前模块的后缀。一旦指定,系统在产生目标文件时,会以模块名加后缀来创建目标文件 |
|
LOCAL_STRIP_MODULE |
指定模块是否需要被strip,该模块是可执行文件或动态库才能使用该变量。 |
|
LOCAL_STRIPPABLE_MODULE |
此变量的值通常由Build系统设置,一般可执行文件和动态库被设为true。 |
|
LOCAL_SYSTEM_SHARED_LIBRARIES |
此变量在编译系统的基本库,如:libc,libm,libdl时,用来定义这些库的依赖库。通常在应用模块定义中不应使用该变量。 |
|
LOCAL_PRELINK_MODULE |
编译.so模块时,定义是否需要prelink。prelink是通过预链接的方式来加快程序启动速度。如果要设置此值为true,要先在build/core/prelink-linux-arm.map文件中定义该库的地址和大小,否则报错。但是在Android4.2以后的代码中找不到文件prelink-linux-arm.map了,在build目录下也搜寻不到这个变量。可能Android已经取消了prelink的功能。 |
Android build系统中常用“LOCAL_” 变量的更多相关文章
- Android.mk 中常用“LOCAL_” 变量
编写模块的编译文件,实际就是定义一系列以“LOCAL_”开头的编译变量,因此我们有必要弄明白这些变量的具体含义.下面是一些经常使用的LOCAL_编译变量的说明: 变量名 说明 LOCAL_ASSET_ ...
- repo: 创建local manifest以及如何添加app到CM/Android build系统中
The local manifest Creating a local manifest allows you to customize the list of repositories on you ...
- 【转】理解 Android Build 系统----不错
$ mmm -help用法:make [选项] [目标] ...选项: -b, -m 忽略兼容性. -B, --always-make Unconditionally make all targets ...
- 理解Android Build系统【转】
本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/ Android Build 系统是用来编译 And ...
- 理解 Android Build 系统
在配置了以上的文件之后,便可以编译出我们新添加的设备的系统镜像了. 首先,调用“source build/envsetup.sh”该命令的输出中会看到 Build 系统已经引入了刚刚添加的 vendo ...
- Ant build xml中的各种变量解释
Ant build.xml中的各种变量 Ant环境变量分为四种: 1. build.properties文件中定义的变量 2. build.xml文件中定义的变量, 3. ...
- selenium.webdriver.common.keys 模块中常用的变量
表11-5 selenium.webdriver.common.keys 模块中常用的变量属性 含义Keys.DOWN, Keys.UP, Keys.LEFT,Keys.RIGHT 键盘箭头键Keys ...
- android Build系统
http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/ android Build系统 超链接
- [原创]Android系统中常用JAVA类源码浅析之HashMap
由于是浅析,所以我只分析常用的接口,注意是Android系统中的JAVA类,可能和JDK的源码有区别. 首先从构造函数开始, /** * Min capacity (other than zero) ...
- Windows系统中path环境变量详解
在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...
随机推荐
- Cesium模型贴地问题(八)
2023-01-12 1.sampleTerrainMostDetailed 根据提供的terrainPrivider和点的弧度坐标计算出当前点的高度信息. var p = new Cesium.Ca ...
- JS弹窗遮罩 POP
html: <div class="popBox"> <div class="pb"> <span class="clo ...
- 探索 C 语言的指针
指针的概念 指针代表一个变量的内存地址,通过&可以拿到变量的内存地址.变量不等于指针,通过*可以拿到指针所指向的变量的值. 在 C 中,存在指针变量,指针变量的声明格式:int* varNam ...
- GPS地图生成02之经典算法体验
经典的利用轨迹生成地图的算法与数据集可寻找于:Mapconstruction by pfoser Mapconstruction by pfoser数据集中,雅典数据集投影坐标系为(UTM, GGRS ...
- Java第三讲动手动脑
1 以上代码无法通过编译主要是由于在Foo类中自定义了有参的构造函数,系统不在提供默认的构造函数(无参),而在上述的引用中并没有提供参数导致无法通过编译. 2. 运行结果 由运行结果分析可知,在运行时 ...
- 说一下created和mounted区别
created: Vue实例vm能够访问data里的数据,和methods里的方法,即在模板渲染成html页面之前,可以通过ajax获取页面所需要的初始化数据,可以在这个生命周期函数操作. mount ...
- 08. AssetBundle.LoadFromFile
参数 path 文件在磁盘上的路径. crc 未压缩内容的 CRC-32 校验和(可选).如果该参数不为零,则加载前将内容与校验和进行比较,如果不匹配则给出错误. offset 字节偏移(可选).该值 ...
- pycharm过期解决方案
如果你的pycharm老是过期,你可以直接下载最新版本的pycharm,然后加入一个网站获取激活码即可 http://idea.medeming.com/jets/
- JavaSE——金额转换
package com.zhao.stringtest; import java.util.Scanner; public class Test3 { //金额转换 //查表法 public stat ...
- 蓝牙mesh组网实践(环境监测传感器应用)
目录 蓝牙mesh组网中的低功耗节点,在应用于低频率上传数据的传感器网络时有着得天独厚的功耗优势,在1min唤醒上传一包的情况下ch582的平均功耗仅有12uA,若每小时甚至每天采样一次数据并上传,平 ...