您的位置:首页 > 移动开发 > Android开发

Android.mk 简介

2014-08-07 19:50 274 查看
分析FTE工程中Android.mk文件

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

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_JAVA_LIBRARIES := framework

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

LOCAL_AAPT_FLAGS := --auto-add-overlay \
--extra-packages com.jamdeo.tv.resources.common

LOCAL_PACKAGE_NAME := FTE
LOCAL_CERTIFICATE := platform

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include device/jamdeo/common/uiresource_tvapi.mk
include $(BUILD_PACKAGE)


说明:

1. LOCAL_PATH := $(call my-dir)

在一个make文件的开头;

定义LOCAL_PATH变量,表示当前文件路径;

宏定义“my-dir“由编译系统提供,返回当前文件,及该Android.mk文件所在路径;

“$” 用于取出变量值。

2. include $(CLEAR_VARS)

定义在/build/core/config.mk中,CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk;

编译时清除除”LOCAL_PATH“之外的LOCAL变量;

实际上包含了CLEAR_VARS指向的脚本文件clear_vars.mk。

BUILD_SYSTEM := $(TOPDIR)build/core,为Android的编译路径

3. LOCAL_MODULE_TAGS := optional

指定在何种模块下编译;

取值如下所示:
LOCAL_MODULE_TAGS := user
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_TAGS := tests
LOCAL_MODULE_TAGS := optional

user: 指该模块只在user版本下才编译;

eng: 指该模块只在eng版本下才编译;

tests: 指该模块只在tests版本下才编译;

optional:指该模块在所有版本下都编译。

4. LOCAL_SRC_FILES := $(call all-java-files-under, src)

需要编译的源代码文件;

在src路径下的所有java文件;

又如LOCAL_SRC_FILES := $(call all-subdir-java-files),

将当前路径下所有java文件设置为要编译文件。

5. LOCAL_JAVA_LIBRARIES := framework

取值如下:
LOCAL_JAVA_LIBRARIES := framework
LOCAL_JAVA_LIBRARIES := core

编译java应用程序和库的时候指定包含的java类库;

LOCAL_STATIC_JAVA_LIBRARIES := 

依赖到的其他静态类库;

静态库要包含到程序中,作为程序的一部分;

动态库或共享库只在执行时链接使用。

6. LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

资源文件路径。

7. LOCAL_AAPT_FLAGS := --auto-add-overlay \

      --extra-packages com.jamdeo.tv.resources.common

将其他文件中的内容添加到该文件下;

编译生成相应的应用;

本例中将com.jamdeo.tv.resources.common的AndroidManifest文件添加进来。

8. LOCAL_PACKAGE_NAME := FTE

编译生成的包名称。

9. LOCAL_CERTIFICATE := platform

用于指定签名时使用的KEY,如果不指定,默认使用testkey;

LOCAL_CERTIFICATE可设置的值如下:
LOCAL_CERTIFICATE := platform
LOCAL_CERTIFICATE := shared
LOCAL_CERTIFICATE := media

而在Android.mk中的这些配置,需要在APK源码的AndroidManifest.xml文件中的manifest节点添加如下内容:

android:sharedUserId="android.uid.system"

android:sharedUserId="android.uid.shared"

android:sharedUserId="android.media"

这些刚好与上面的mk文件里的配置对应上。

10. LOCAL_PROGUARD_FLAG_FILES := proguard.flags

防止反编译。

11. include device/jamdeo/common/uiresource_tvapi.mk

包含额外的编译mk文件。

12. include $(BUILD_PACKAGE)

一个make文件的结尾;

编译类型;

include $(BUILD_STATIC_LIBRARY) 编译成静态库;

include $(BUILD_SHARED_LIBRARY) 编译成动态库;

include $(BUILD_EXECUTABLE) 编译成可执行程序。

此外,

LOCAL_PRIVILEGED_MODULE := true

控制apk的生成目标目录,放在priv-app下。

LOCAL_OVERRIDES_PACKAGES := Settings

不将Settings编译成apk。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android.mk