Android Build System
http://source.android.com/porting/build_system.html#top
Android 是用一个客制化的编译系统来产生工具,二进制代码,文件系统(documentation)。本文档提供一个Android系统编译的简介以及简单的范例。
android系统编译是基于一个较新版本的GNU Make(也许android使用的某些新特性都有可能没有在GNU Make的官方网站列出)。在编译之前,请通过执行 % make -v 来查看Make的版本号。如果版本号低于3.80,那么就需要更新你的Make版本。
Understanding the makefile
makefile 被用来编译指定的应用程序(application),makefile文件一般都会包含如下的几个元素:
1.Name: 编译的应用程序名称(LOCAL_MODULE V := <build_name>)
2.Local Variables: 使用CLEAR_VARS清除本地变量(include $(CLEAR_VARS))
3.Files: 应用程序的源码文件(LOCAL_SRC_FILES := main.c)
4.Tags: 按需给出tags定义(LOCAL_MODULE_TAGS := eng development)
5.Libraries: 定义应用程序将要连接的库(LOCAL_SHARED_LIBRARIES := cutils)
6.Template file: 包含一个make tools 下的模板文件来指定将应用编译成特定的目标(include $(BUILD_EXECUTABLE))
下面小段是一个典型的makefile举例(the following snippet illustrates a typical makefile).
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := <buil_name>
LOCAL_SRC_FILES := main.c
LOCAL_MODULE_TAGS := eng development
LOCAL_SHARED_LIBRARIES := cutils
include $(BUILD_EXECUTABLE)
(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,
(HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,
COPY_HEADERS, KEY_CHAR_MAP
include $(CLEAR_VARS)
LOCAL_MODULE := <buil_name>
LOCAL_SRC_FILES := main.c
LOCAL_MODULE_TAGS := eng development
LOCAL_SHARED_LIBRARIES := cutils
include $(BUILD_EXECUTABLE)
(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,
(HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,
COPY_HEADERS, KEY_CHAR_MAP