收藏 分享(赏)

android.mk文件的一点感悟.doc

上传人:pw17869 文档编号:7051419 上传时间:2019-05-04 格式:DOC 页数:4 大小:18KB
下载 相关 举报
android.mk文件的一点感悟.doc_第1页
第1页 / 共4页
android.mk文件的一点感悟.doc_第2页
第2页 / 共4页
android.mk文件的一点感悟.doc_第3页
第3页 / 共4页
android.mk文件的一点感悟.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Android Android.mk 文件一点感悟Android.mk文件时android 中的一个非常重要的概念。我们有以下几个方便的时候需要使用它。1:添加新的 apk源码文件编译。这里我们先参考下AlarmClock的Android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := AlarmClockinclude $(BUILD_PACKAGE)简单的解释下:第一行,赋予LOCAL_PATH一

2、个新的值,表示当前的路径。第二行,清楚所有的系统自带的标准变量值。我 们通过查找CLEAR_VARS变量定义,可以发现它实际上代表的是sourcebuildcoreconfig.mk中有定义如下:CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk所以查看clear_vars.mk文件可以得到知道:# Clear out values of all variables used by rule templates.#LOCAL_MODULE:=LOCAL_MODULE_PATH:=LOCAL_MODULE_STEM:=LOCAL_DONT_CHECK_MODUL

3、E:=LOCAL_CHECKED_MODULE:=LOCAL_BUILT_MODULE:=LOCAL_BUILT_MODULE_STEM:=OVERRIDE_BUILT_MODULE_PATH:=它把这些变量都清空了。注意它这里没有去清空LOCAL_PATH变量。所以这个步骤放在第二行,是没有关系的。它的这个写法有点误导人哈。第三、四行,给变量赋予新值。这里赋予的是LOCAL_SRC_FILES,LOCAL_PACKAGE_NAME第五行,执行BUILD_PACKAGE。它的定 义也是在 config.mk中定义如下:BUILD_PACKAGE:= $(BUILD_SYSTEM)/packag

4、e.mk,更多更加具体的,自己去看看吧。这里其实有很多的,# # Build system internal files# #BUILD_COMBOS:= $(BUILD_SYSTEM)/comboCLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mkBUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mkBUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mkBUILD_STATIC_LIBRARY:= $(BU

5、ILD_SYSTEM)/static_library.mkBUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mkBUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mkBUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mkBUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mkBUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_e

6、xecutable.mkBUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mkBUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mkBUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mkBUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mkBUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mkBUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYST

7、EM)/static_java_library.mkBUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mkBUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mkBUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mkBUILD_KEY_CHAR_MAP := $(BUILD_SYSTEM)/key_char_map.mk基本上你有用到的就已经提前给你设计好了。你要做的很简单了。这里的思想其实和makefile的是一样的。目标:信赖文件执行命令

8、只是Android在这里进行了高度的封装和简化。前面四行相当于设置目标文件。最后一行相当于执行命令。所以,如果我们要添加自己的apk, 就按照这种思想添加就可以了。2:变量的使用makefile文件有一个基础的东西就是变量。大家可以自己了解下。这里我们说说Android.mk这个变量的不同的地方。主要是用它来做代 码管理。这个部分是我同事小强总结出来的,我就cp过来。替它总结下。首先在执行make文件的时候这些变量是全局有效的,一些公共的变量会通过include $(CLEAR_VARS)给清除掉。我们这里主要是添加自己的 变量。我们在使用自己定义变量的时候有两种情况,一种是在mk中使用,一种

9、是在 cpp中使用。注意java不支持的。这两种情况有点不同,请注意。首先我们得定义这个变量,一般来讲都是在产品的BoardConfig.mk中定义,例如:TARGET_MEMORY_STYLE := TARGET_MEM_256MB#TARGET_MEMORY_STYLE := TARGET_MEM_256MB_ST#TARGET_MEMORY_STYLE := TARGET_MEM_512MB#TARGET_MEMORY_STYLE := TARGET_MEM_512MB_ST# board-specific configurationBOARD_OPENCORE_FLAGS := -DT

10、ELECHIPS_ALSAifeq ($(BOARD_KERNEL_BASE),0x40000000)BOARD_MEM_FLAGS := -DTCC_MEM_256MBelseBOARD_MEM_FLAGS := -DTCC_MEM_512MBendif这里总共有两个我们经常用的东西。第一:如果是mk总使用,定义如前四行就可以了。变量 := 字符串在mk中的使用方法就像后面例子一样。ifeq($(变量),对比值)elseendif第二:如果你想在cpp中使用, 请定义方式如下变量 := -D+变量名如后面几行示例一样的。如果想在cpp中应用,首先必 须在cpp对于的mk文件中,声明如下LOCAL_CFLAGS += $(BOARD_MEM_FLAGS)格式: LOCAL_CFLAGS += $(变量)然后它的cpp中就可以引用如下:此时去掉了-D前缀。ifdef TCC_MEM_512MBendif

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报