Andorid中mk文件的一些解释

来源:互联网 发布:linux运维开发 编辑:程序博客网 时间:2024/06/06 03:55

本文是参照网上一些说明以及自己的总结结合起来,仅供参考。

android中源码模块写编译会有一个脚本文件Android.mk,其中有一些用于编译的语法


LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS)


这两行代码的作用是:
   设置当前模块的编译路径为当前文件夹路径。
   清理(可能由其他模块设置过的)编译环境中用到的变量。
为了方便模块的编译,Build 系统设置了很多的编译环境变量。要编译一个模块,只要在编译之前根据需要设置这些变量然后执行编译即可。它们包括:
   LOCAL_SRC_FILES:当前模块包含的所有源代码文件。
   LOCAL_MODULE:当前模块的名称,这个名称应当是唯一的,模块间的依赖关系就是通过这个名称来引用的。
   LOCAL_C_INCLUDES:C 或 C++ 语言需要的头文件的路径。
   LOCAL_STATIC_LIBRARIES:当前模块在静态链接时需要的库的名称。(以.a形式结尾的库文件)
   LOCAL_SHARED_LIBRARIES:当前模块在运行时依赖的动态库的名称。(以.so形式结尾的库文件)
   LOCAL_CFLAGS:提供给 C/C++ 编译器的额外编译参数。
   LOCAL_JAVA_LIBRARIES:当前模块依赖的 Java 共享库。
   LOCAL_STATIC_JAVA_LIBRARIES:当前模块依赖的 Java 静态库。
   LOCAL_PACKAGE_NAME:当前 APK 应用的名称。
   LOCAL_CERTIFICATE:签署当前应用的证书名称。
   LOCAL_MODULE_TAGS:当前模块所包含的标签,一个模块可以包含多个标签。标签的值可能是 debug, eng, user,development 或者 optional。其中,optional 是默认标签。标签是提供给编译类型使用的。不同的编译类型会安装包含不同标签的模块,关于编译类型的说明如表 7 所示:
   (call my-dir)的功能由编译器提供,被用来返回当前目录的地址(这里的当前目录里包含Android.mk这个文件本身)
在Android.mk中打印输出信息的方法是:$(warning string)或者$(error string),warning 表示打印后继续编译,error表示编译到这位置后停止编译。
查看打印信息在编译的log中,还可以加关键字,比如:$(warning "sdd = $(MTK_PLATFORM)")


可以LOCAL_SRC_FILES := $(call all-subdir-java-files)这种形式来包含local_path目录下的所有java文件。




   include $(BUILD_SHARED_LIBRARY)(编译动态库)
   include $(BUILD_STATIC_LIBRARY)(编译静态库
 include $(BUILD_EXECUTABLE))(表示以一个可执行程序的方式进行编译。)


LOCAL_OVERRIDES_PACKAGES此变量可以使其他的模块不加入编译,如源码中DeskClock的android.mk有LOCAL_OVERRIDES_PACKAGES := AlarmClock


CLEAR_VARS这个变量由编译器提供,并且指明了一个GNU Makefile文件,这个功能会清理掉所有以LOCAL_开头的内容(例如 LOCAL_MODULE、
LOCAL_PATH表示工程的根目录:比如在vendor/mediatek/tclm2m/proprietary/basepackage_system.mk定义了$(LOCAL_PATH)/app,该mk对应的是basepackage_system工程下的app路径,


内置apk路口:vendor/lewa/prebuilt/operator/[project]/system(不可卸载应用),(vendor/operator/app/可卸载应用)
all-subdir-makefiles: 返回一个位于当前'my-dir'路径的子目录中的所有Android.mk的列表。
this-makefile:  返回当前Makefile 的路径(即这个函数调用的地方)
parent-makefile:  返回调用树中父 Makefile 路径。即包含当前Makefile的Makefile 路径。
grand-parent-makefile:返回调用树中父Makefile的父Makefile的路径

0 0
原创粉丝点击