Android.mk文件学习
1、LOCAL_PATH:= $(callmy-dir)
‘:=’是赋值的意思,LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。
2、include $( CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),
除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
每个编译模块由include $(CLEAR_VARS) 开始,由include $(BUILD_XXX) 结束
3、LOCAL_JACK_ENABLED:=disabled
LOCAL_JACK_ENABLED有三种模式,即分别是disabled,full和incremental。disabled是指关闭JACK编译,使用android old toolchain。full是指全部编译,即每次编译,都会将所有的code全部编译。incremental是指增量编译,即只会编译修改的代码。incremental模式默认是关闭的,需要设置。
不加本行会生成clasess.jack而非clasess.jar。
4、LOCAL_MODULE := helloworld
LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。
5、LOCAL_SRC_FILES := $(call all-subdir-java-files)
定义了本模块编译使用的源文件,采用的是基于LOCAL_PATH的相对路径
6、LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_TAGS :=user eng tests optional
- user: 指该模块只在user版本下才编译
- eng: 指该模块只在eng版本下才编译
- tests: 指该模块只在tests版本下才编译
- optional:指该模块在所有版本下都编译
7、LOCAL_PRIVILEGED_MODULE :=true
LOCAL_PRIVILEGED_MODULE := true 表示app应用在目录/system/priv-app/下
LOCAL_PRIVILEGED_MODULE := false 表示app应用在目录/system/app/下
8、DEVICE_PACKAGE_OVERLAYS := \
device/samsung/avl7580/overlay
‘\’表示连接符,DEVICE_PACKAGE_OVERLAYS可以设定路径,起到的作用就是替换掉原来的目录中的资源,比如图片等等,惟一的要求就是必须建立和原来图片位置相同的路径
有两种不同的overaly目录定义,来影响最终的效果:
PRODUCT_PACKAGE_OVERLAYS: used by a particular product
DEVICE_PACKAGE_OVERLAYS: used several products that share a common device model
如果包含同一资源,那么 PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS
9、LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13
当前模块依赖的java静态库,这项不是必须的。
include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := aa
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aa:libs/aa.jar
include $(BUILD_MULTI_PREBUILT)
10、LOCAL_CERTIFICATE := platform
(1)AndroidManifest.xml的manifest节点中添加 android:sharedUserId=”android.uid.system”,
Android.mk中增加 LOCAL_CERTIFICATE := platform
(2)shared签名:
AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared”,
Android.mk中增加LOCAL_CERTIFICATE := shared
(3)media签名:
AndroidManifest.xml的manifest节点中增加 android:sharedUserId=”android.media”,
Android.mk中增加 LOCAL_CERTIFICATE := media
11、LOCAL_RESOURCE_DIR += \
$(LOCAL_PATH)/res \
$(LOCAL_PATH)/res_p
资源目录
12、include $(BUILD_STATIC_JAVA_LIBRARY)
编译目标 | 说明 |
BUILD_HOST_STATIC_LIBRARY | 主机上的静态库 |
BUILD_HOST_SHARED_LIBRARY | 主机上的动态库 |
BUILD_HOST_EXECUTABLE | 主机上的可执行文件 |
BUILD_STATIC_LIBRARY | 目标设备上的静态库 |
BUILD_SHARED_LIBRARY | 目标设备上的动态库 |
BUILD_EXECUTABLE | 目标设备上的可执行文件 |
BUILD_JAVA_LIBRARY | JAVA库 |
BUILD_STATIC_JAVA_LIBRARY | 静态JAVA库 |
BUILD_HOST_JAVA_LIBRARY | 主机上的JAVA库 |
BUILD_PACKAGE | APK程序 |
参考:
Android.mk
Android.mk文件学习相关推荐
- Android.mk文件语法规范
序言: ------------- 此文档旨在描述Android.mk文件的语法,Android.mk文件为Android NDK(原生开发)描述了你C/C++源文件. 为了明白下面的内容,你必须已经 ...
- 安卓编译android.mk,详解安卓系统中的Android.mk文件
概述 Android.mk文件用来向编译系统描述如何编译你的源代码.更确切地说,该文件其实就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量减少源码中声明变量, ...
- Android.mk 入门学习
我们还是采用RK3399的开发板来学习Android.mk NOTED: 在编译之前,我们需要source & lunch source build/envsetup.sh lunch rk3 ...
- Android.mk文件语法规范及使用模板 (转载)
2019独角兽企业重金招聘Python工程师标准>>> http://blogold.chinaunix.net/u3/99423/showart_2206760.html Andr ...
- Android.mk 文件语法详解
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
- Android.mk文件编写
Android.mk文件编写的例子: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello LOCAL_SR ...
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
1 编写以下案例(下面的三个按钮都调用了底层的C语言): 项目案例的代码结构如下: 2 编写DataProvider的代码: package com.example.ndkpassdata; ...
- android ndk 多线程mk,NDK开发之Android.mk文件编写
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 现在我们把android稍微写复杂些.在项目根目录下创建一个lib1文件夹 结构如图: test10.h和test11. ...
- android ndk 文件管理,Android NDK开发指南(二)Android.mk文件
http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2382225.html 1. 概述 Android.mk文件是用来描述build sy ...
最新文章
- tl r402路由器设置_家里新安装宽带如何连接路由器 家里新安装宽带连接路由器方法【详解】...
- java二维矩阵怎么进行转置_矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)...
- CodeForces - 1304D Shortest and Longest LIS(构造+贪心)
- 升级鸿蒙系统照片,华为鸿蒙系统照片出炉,神似EMUI,海内外花粉沸腾了
- xcode8 升级后注释快捷键不能使用的解决方法
- jQuery 属性选择器
- 关于Java List 的remove(index)方法
- 开发一款高端大气上档次的android应用需要必备的知识——记于2013年末
- 三维点云学习(3)4-Expectation-Maximization (EM)
- 前缀列表技术原理和实验(华为设备)
- 全表行转列——动态SQL
- 麦肯锡:数字化转型四步法!
- 数据库左连接、右连接
- Excel 常用函数
- warcraft3Viewer模型导入到3dsmax到Unity
- matlab命令行运行,命令行运行matlab
- 倒计时 妙味课堂_妙味课堂——JavaScript基础课程笔记
- excel只显示公式,不显示结果
- CocosCreator接入穿山甲广告2-插屏广告
- 【光耦 Normalized...和 CTR 测试条件及测试曲线 解读 : PC817和LTV-1007-TP1-G】
热门文章
- 视图类中CMyDoc* GetDocument() const编译时错误:缺少“;”(在“*”的前面)
- 【forward方法--深度学习】
- 怎么看懂linux命令
- NOIP2018提高组游记
- Vue超好玩的新特性:在CSS中使用JS变量
- SpringBoot - 定时任务入门(@Scheduled )详解
- 人生苦短我用python
- SilverLight教程
- 《P2P网贷》导图笔记
- !false==fasle