android.mk文件的一点感悟.doc_第1页
android.mk文件的一点感悟.doc_第2页
android.mk文件的一点感悟.doc_第3页
android.mk文件的一点感悟.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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一个新的值,表示当前的路径。第二行,清楚所有的系统自带的标准变量值。我们通过查找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_MODULE:=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)/package.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:= $(BUILD_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_executable.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_SYSTEM)/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的是一样的。目标:信赖文件执行命令只是Android在这里进行了高度的封装和简化。前面四行相当于设置目标文件。最后一行相当于执行命令。所以,如果我们要添加自己的apk,就按照这种思想添加就可以了。2:变量的使用makefile文件有一个基础的东西就是变量。大家可以自己了解下。这里我们说说Android.mk这个变量的不同的地方。主要是用它来做代码管理。这个部分是我同事小强总结出来的,我就cp过来。替它总结下。首先在执行make文件的时候这些变量是全局有效的,一些公共的变量会通过include $(CLEAR_VARS)给清除掉。我们这里主要是添加自己的变量。我们在使用自己定义变量的时候有两种情况,一种是在mk中使用,一种是在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 := -DTELECHIPS_ALSAifeq ($(BOARD_KERNEL_BASE),0x40000000)BOARD_MEM_FLAGS := -DTCC_MEM_256MBelseBOARD_MEM_FLAGS := -DTCC_MEM_512MBendif这里总共有两个我们经常用的东西。第一: 如果是mk总使用,定义如前四行就可以了。 变量 := 字符串 在mk中的使用方法就像后面例子一样。 ifeq($(变量),对比值) else endif 第二:如果你想在cpp中使用,请定义方式如下 变量 := -D+变量名 如后面几行示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论