Android.mk 是是Android提供的一种makefile文件,用来指定诸如编译生成so库名、可执行bin文件以及jar包以及apk
最简单的Android.mk
LOCAL_PATH := $(call my-dir) #定义了当前模块的相对路径 include $(CLEAR_VARS)#清空当前环境变量 LOCAL_MODULE:= test1 #编译生成的目标名称 LOCAL_SRC_FILES := test1.c #编译该模块需要的源文件 include $(BUILD_EXECUTABLE) #编译所生成的目标文件格式
下面介绍几种常见用法
1.1、多源码编译
方法一:直接引用多个.c文件
LOCAL_SRC_FILES := test1.c\
test2.c\
test3.c\
方法二:使用系统提供的函数处理
1.2、编译多个目标文件
LOCAL_PATH := $(call my-dir) #定义了当前模块的相对路径 include $(CLEAR_VARS)#清空当前环境变量 LOCAL_MODULE:= test1 #编译生成的目标名称 LOCAL_SRC_FILES := test1.c #编译该模块需要的源文件 include $(BUILD_EXECUTABLE) #编译所生成的目标文件格式
include $(CLEAR_VARS)#清空当前环境变量
LOCAL_MODULE:= test2 #编译生成的目标名称
LOCAL_SRC_FILES := test2.c #编译该模块需要的源文件
include $(BUILD_EXECUTABLE) #编译所生成的目标文件格式
1.3、编译动态库、静态库
将编译动态库:
编译类型修改为 BUILD_SHARED_LIBRARY
编译静态库:
编译类型修改为 BUILD_STATIC_LIBRARY
1.4、编译jar包,APK
编译apk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := LocalPackage
include $(BUILD_PACKAGE)
编译jar包
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := com.test.myjar
include $(BUILD_STATIC_JAVA_LIBRARY):编译成静态jar包
include $(BUILD_JAVA_LIBRARY):编译生成共享jar包
1.5、Android.mk中的判断语句
ifeq($(VALUE), x) #ifneq
do_yes
else
do_no
endif
ifeq/ifneq:根据判断条件执行相关编译