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

相关文章: