1. 基本语法
LOCAL_PATH := $(call my-dir) //定义了当前模块的相对路径,必须在清空当前环境变量之前
include $(CLEAR_VARS) //清空当前环境变量
LOCAL_MODULE := test //编译生产的目标文件的名称
LOCAL_SRC_FILES := test.c //编译该模块需要的源文件
include $(BUILD_EXECUTABLE) //编译生成的目标文件格式
2. 多源文件编译
LOCAL_C_ALL_FILES := $(call all-c-files-under)
LOCAL_SRC_FILES := $(LOCAL_C_ALL_FILES)
4. 编译生成动态库
编译生成的目标文件格式改为: BUILD_SHARED_LIBRARY
5. 编译生成静态库
编译生成的目标文件格式改为: BUILD_STATIC_LIBRARY
6. 如何引入系统库
LOCAL_SHARED_LIBRARIES += libxxx
7. 如何引入第三方库
LOCAL_LDFLAGS := -L/Path -lxxx
8. 如何引入静态库
LOCAL_LDFLAGS := xxx.a
9. 如何引入头文件
LOCAL_C_INCLUDES := path
10. 如何编译jar包
include $(BUILD_STATIC_JAVA_LIBRARY) //编译成静态jar包
include $(BUILD_JAVA_LIBRARY) //编译成共享jar包
静态jar包: 使用.class文件打包而成的jar文件,可以在任何java虚拟机运行
动态jar包:在静态jar包基础之上使用.dex打包而成的jar文件,.dex是Android系统使用的文件格式。
11. 如何编译apk
LOCAL_SRC_FILES:=$(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := xxx //编译生成apk名称
include $(BUILD)
12. apk中导入jar包和库文件
LOCAL_STATIC_JAVA_LIBRARIES := static_library //引入静态jar包
LOCAL_JAVA_LIBRARIES := share_library //引入共享jar包
13. 预编译jar包
LOCAL_MODULE_CLASS := xxx //指定编译生成文件类型,JAVA_LIBRARIES, APPS,SHARED_LIBRARIES,EXECUTABLES,ETC
include $(BUILD_PREBUILD) //预编译jar包
14. Android.mk中如何加判断语句
ifeq/ifneq //根据判断条件执行相关编译