解析Android.mk文件
来源:互联网 发布:java权限 编辑:程序博客网 时间:2024/05/24 06:30
以Browser为例。
一般情况下, Android.mk和需要编译的源文件放在同一目录下。
LOCAL_PATH 变量用于查找源文件, 宏函数my-dir由编译系统提供,用于返回当前路径。
LOCAL_PATH := $(call my-dir) //将LOCAL_PATH 变量定义成本文件所在的目录
Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始,include $(BUILD_XXX)结束。
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除除LOCAL_PATH 以外的所有LOCAL_XXX变量。例如:LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。
include $(BUILD_STATIC_LIBRARY)表示编译成静态库
include $(BUILD_SHARED_LIBRARY)表示编译成动态库
include $(BUILD_EXECUTABLE)表示编译成可执行文件
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := MBrowser2 //APK的名称
LOCAL_MODULE_TAGS := optional
解析:LOCAL_MODULE_TAGS =user eng tests optional
user :指该模块只在user版本下才编译
eng:指该模块只在eng版本下才编译
tests :指该模块只在tests 版本下才编译
optional:指该模块在所有版本下都编译
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_OVERRIDES_PACKAGES := Browser
LOCAL_CERTIFICATE 后面是签名文件的文件名,说明Browser.apk是一个需要platform key签名的apk。
(1)系统中所有使用android.uid.system作为共享UID的APK,都会首先在mannifest节点中增加android:sharedUserId="android.uid.system",然后在Android.mk中增加LOCAL_CERTIFICATE := platform
(2)系统中所有使用android.uid.shared作为共享UID的APK,都会首先在mannifest节点中增加android:sharedUserId="android.uid.shared",然后在Android.mk中增加LOCAL_CERTIFICATE := shared
(3)系统中所有使用android.uid.media作为共享UID的APK,都会首先在mannifest节点中增加android:sharedUserId="android.uid.media",然后在Android.mk中增加LOCAL_CERTIFICATE := media
LOCAL_PROGUARD_FLAG_FILES 在源码中进行混淆编译 也可以为null
LOCAL_OVERRIDES_PACKAGES 使其他的模块不参加编译,此处即使Browser不加入编译
LOCAL_SRC_FILES := \
$(call all-java-files-under, src) \
src/com/android/browser/EventLogTags.logtags
如果要包含的是java源码的话,可以调用all-java-files-under得到。(这种形式来包含LOCAL_PATH目录下的所有Java文件);
当涉及到C/C++时,LOCAL_SRC_FILES 变量就必须包含将要编译打包进模块中的C或 C++源代码文件。
在这里可以不用列出头文件和包含文件夹,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好。all-java-files-under宏的定义在build/core/definitions.mk中。
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
guava \
android-support-v13 \
android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES 依赖的静态jar包(jar包是使用include$(BUIDE_STATIC_JAVA_LIBRARY)生成的)。
LOCAL_JAVA_LIBRARIES := \
android.policy \
com.mstar.android
LOCAL_JAVA_LIBRARIES 依赖的共享jar包
LOCAL_JNI_SHARED_LIBRARIES := libbrowser2util_jni
LOCAL_JNI_SHARED_LIBRARIES 定义了要包含的so库文件的名字,如果程序没有采用jni,不需要LOCAL_JNI_SHARED_LIBRARIES ,这样在编译的时候,NDK自动会把这个libbrowser2util_jni打包进apk中。
LOCAL_EMMA_COVERAGE_FILTER := *,-com.android.common.*
# We need the sound recorder for the Media Capture API.
LOCAL_REQUIRED_MODULES := SoundRecorder libbrowser2util_jni
LOCAL_REQUIRED_MODULES 指定模块运行所依赖的模块(模块安装时将会同步安装它所依赖的模块)
SoundRecorder 表示该模块需要SoundRecorder模块,在系统编译的时候就会将SoundRecorder放入到system.img中,如果单独编译mm的话就不会关心SoundRecorder
include $(BUILD_PACKAGE) //用来编译生成package/app下的apk
#========================================================================
include $(call all-makefiles-under,$(LOCAL_PATH)) //告诉编译器继续向目录深处递归的一种规定写法
0 0
- android.mk 文件解析
- Android.mk文件解析
- 解析Android.mk文件
- Android.mk文件解析
- android.mk文件解析
- Android.mk文件解析
- Android Android.mk文件解析
- Android Android.mk文件解析
- Android.mk文件解析(一)
- Android.mk文件解析(二)
- Android.mk文件的解析
- Android .mk文件语法解析
- Android .mk文件语法解析
- Android.mk编译文件解析
- Android .mk文件语法解析
- Android .mk文件语法解析
- Android .mk文件语法解析
- Android中的Android.mk文件解析
- IOS 时间格式 时间转换 大总结
- VC编译错误:The source files "*\A.cpp " and "*\A.cpp " are both configured to produce the output file "*\
- AccessController.doPrivileged
- Android WebView 缓存处理
- maven中的 dependencies 和 dependencyManagement 的区别
- 解析Android.mk文件
- tar,tar.gz,zip,tar.bz2压缩算法比较,tar.bz2压缩率最大最耗cpu
- php目录和文件路径基础
- 无向图 点连通tarjan算法 求割点 + 求BCC以及BCC里面的点 + 求去掉每个点后图中BCC数目 【总结】
- Android入门(42)——第四章 使用AlertDialog实现提示框
- LeetCode225 Implemet Stack using Queues Java题解
- cygwin安装教程图解
- Flash,EEPROM区别
- android中ScrollView的使用webservice的超时