LOCAL_PATH := $(call my-dir)
include $( CLEAR_VARS)
LOCAL_MODULE := helloworld
#c
LOCAL_SRC_FILES := helloworld.c
#java
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SRC_FILES := $(filter-out src/com/android/settings/cta_settings%, $(LOCAL_SRC_FILES))
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_EXECUTABLE)
LOCAL_STATIC_LIBRARIES 加入所需要链接的静态库(*.a)的名称
LOCAL_SHARED_LIBRARIES 中加入所需要链接的动态库(*.so)的名称
LOCAL_MODULE 表示模块最终的名称, BUILD_EXECUTABLE 表示以一个可执行程序的方式进行编译
LOCAL_SHARED_LIBRARIES := \
libutils \
libcutils \
libc
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS :=user eng tests optional
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
include $(BUILD_STATIC_LIBRARY)
include $(BUILD_SHARED_LIBRARY)
- 以上三者的生成结果分别在如下,generic依具体target会变:
out/target/product/generic/obj/ STATIC_LIBRARY
out/target/product/generic/obj/ SHARED_LIBRARY
- 每个模块的目标文件夹分别为:
静态库: XXX_static_intermediates
动态库: XXX_shared_intermediates
- 使用样例
- 相关万络文档
Android.mk示例
- Android.mk文件
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
#LOCAL_ARM_MODE:=arm
#LOCAL_MODULE_TAGS := eng user
LOCAL_SHARED_LIBRARIES:= libc libcutils libnvram //移引用静态链接库 其中libcuils的源码文件在 system/core/libcutils
LOCAL_SRC_FILES:= \
nvram_country.c
LOCAL_C_INCLUDES:= \
mediatek/external/nvram/libnvram \
mediatek/custom/$(TARGET_PRODUCT)/cgen/cfgdefault \
mediatek/custom/$(TARGET_PRODUCT)/cgen/cfgfileinc \
mediatek/custom/$(TARGET_PRODUCT)/cgen/inc
LOCAL_CFLAGS:=
LOCAL_MODULE:=nvram_country
include $(BUILD_EXECUTABLE) //编译可执行文件
- nvram_country.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
int main(void)
{
char code[3]={"IT"};
//其中property_set函数 就是在libcutils静态库中,此静态库放在 system/lib/libcutils.so
property_set("ro.product.countrycode", code);
exit(EXIT_SUCCESS);
}