一、Android.mk简介
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库、jar包以及apk等等。
image二、m命令
android源码目录下的build/envsetup.sh文件,描述编译的命令
-
m: Makes from the top of the tree.
-
mm: Builds all of the modules in the current directory.
-
mmm: Builds all of the modules in the supplied directories.
要想使用这些命令,首先需要在android源码根目录执行. build/envsetup.sh 脚本设置环境
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
下面举个例子说明,假设我要编译android下的\hardware\libhardware_legacy\power模块,当前目录为源码根目录,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
或者 :
1、. build/envsetup.sh
2、cd hardware/libhardware_legacy/power/
3、mm
以上三个命令都可以用-B选项来重新编译所有目标文件。
三、mk文件分析
分析一个最简单的Android.mk文件
LOCAL_PATH := $(call my-dir):
定义了当前模块的相对路径
include $(CLEAR_VARS)
清空当前环境变量
LOCAL_MODULE:= test
编译生成的目标名称
LOCAL_SRC_FILES := test.c
编译该模块需要的源文件
include $(BUILD_EXECUTABLE)
编译所生成的目标文件格式
四、静态和动态库
1、静态jar包:include $(BUILD_STATIC_JAVA_LIBRARY)
使用.class文件打包而成的JAR文件,可以在任何java虚拟机运行
2、动态jar包:include $(BUILD_JAVA_LIBRARY)
在静态jar包基础之上使用.dex打包而成的jar文件,.dex是android系统使用的文件格式。
网友评论