勃列日列夫纪录片:Android技术专题系列之三--编译(build)流程
来源:百度文库 编辑:偶看新闻 时间:2024/05/17 01:55:42
Android 技术专题系列之三 -- 编译(build) 流程
Android使用的build系统与普通Linux软件使用的build工具有很大不同,因而,可能使熟悉传统Linux开发工具的程序员稍感陌生。普通的软件项目一般使用autotools工具,包括autoconf,automake,libtool等,利用这些工具来自动生成Makefile。而Android创建了一套自己的系统来生成Makefile。下面对Android的build系统作一初步探讨。Android源码中的build/core/build-system.html是我们研究Androidbuild系统的基本文档。本文基于这一文档并进一步展开。Android build系统定义了一套自己的变量,宏等,如LOCAL_MODULE_TAGS,LOCAL_PACKAGE_NAME等。如何代入这些变量,如何展开这些宏,都在build/core目录下的文件中定义。
开发人员可以使用这些变量编写Android build系统的Makefile --Android.mk。每个模块,如一个应用,一个共享库等,都有一个自己的Android.mk。在编译的时候,Android.mk中的宏就会被展开成相应的Make规则,变量也会代入相关的规则。下面以packages/apps/AlarmClock/Android.mk举例介绍:
~~~~~~~~
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := eng development
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := AlarmClock
include $(BUILD_PACKAGE)
~~~~~~~~~~
关于这些变量的含义,在build/core/build-system.html中都有具体介绍。值得注意的是,如果是生成一个可执行程序,则引用BUILD_PACKAGE,如果生成一个library,则引用BUILD_SHARED_LIBRARY。我们可以模仿现有的Android.mk去创建自己的Android.mk。
build/envsetup.sh中引入了几个方便的命令可用来帮助执行build命令。
m: 执行对整个Android源码的build
mm: 执行对当前目录下模块的build.
printconfig: 当前build的配置情况。
在整个Android源码编译完成后,生成的二进制文件以及image等都安装在out/目录下。通过如下命令序列可以启动emulator(假设Android源码安装在~/mydroid目录下):
exportANDROID_PRODUCT_OUT=~/mydroid/out/target/product/generic/
cd~/mydroid/out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates
./emulator
【杀人案件】系列之三
小麦专题技术网站
浪客系列问题之三
有什莫比较知名的天之痕专题论坛?(非轩辕剑系列惟有天之痕)
周星驰系列专题那里可以下载
三人命丧青岛交通事故系列问题之三 政府能做点什么吗?
饶雪漫的《左耳》是系列之三,那之二和之一分别是什么呢?
高三数学专题练习题哪能找到?
paranoid android中文歌词
现代编译技术的最新发展
ELF系列游戏有中文的专题网站吗??
十大动漫系列之三:你最喜欢的十部动画电影是什么?
三人命丧青岛交通事故系列问题之四 代理费诉讼费有标准吗?
英雄无敌三-末日之刃硬盘版下载
轩辕剑外传三-天之痕攻略
什么是 三金技术
宋朝三大技术
radiohead 的 Paranoid Android 中文翻译
高三历史专题复习怎样才能应对高考?
【杀人案件】系列之四
【杀人案件】系列之二
谜语系列之①
谜语系列之②
谜语系列之③