Android编译系统
来源:互联网 发布:淘宝代销货源网女装 编辑:程序博客网 时间:2024/04/28 12:01
Android编译系统
1. Android编译系统
编译脚本主要位置:
*.mk
build/core/
build/tools/
build/envsetup.sh:定义函数mm,mmm,choosecombo等;
2. 模块编译
2.1 Java模块
通常Java模块的编译提供一个Android.mk就可以了。
LOCAL_PACKAGE_NAME:模块名。
LOCAL_SRC_FILES:代码;
2.2 C/C++模块
通常C/C++模块的编译提供一个Android.mk就可以了。
LOCAL_MODULE:模块名;
LOCAL_SRC_FILES:编译的源文件;
LOCAL_C_INCLUDES:需要包含的头文件目录;
LOCAL_SHARED_LIBRARIES:链接时需要的外部库;
LOCAL_PRELINK_MODULE:是否需要prelink处理;
BUILD_SHARED_LIBRARY:指明要编译成动态库;
LOCAL_PATH:编译时的目录;
http://linux.chinaunix.net/techdoc/beginner/2009/10/25/1141239.shtml
http://heaven.branda.to/~thinker/GinGin_CGI.py/show_id_doc/393
2.3 build/envsetup.sh
定义函数mm,mmm,choosecombo等。
2.4 choosecombo
定义于:build/envsetup.sh。
function choosecombo()
{
choosesim $1
//选择模拟器类型,echo $TARGET_SIMULATOR,值为
// 1. Device
// 2. Simulator
echo
echo
choosetype $2
//选择编译类型,echo $TARGET_BUILD_TYPE
// 1. release
// 2. debug
echo
echo
chooseproduct $3
//选择产品类型,echo $TARGET_PRODUCT,如abcde
echo
echo
choosevariant $4
//选择编译变量,echo $TARGET_BUILD_VARIANT
// 1. user
// 2. userdebug
// 3. eng
echo
set_stuff_for_environment
printconfig
}
综上,choosecombo选择这些命令后,把所有的用户选择信息输出在环境变量之中。所以,如果重新打开shell,需要重新选择,否则原有的配置信息丢失。
2.5 vendor/vendorabc/abcde/BoardConfig.mk
config输出:
system/core/include/arch/linux-arm/AndroidConfig.h
2.5.1 BOARD_HAVE_BLUETOOTH
主要引用处:frameworks/base/libs/audioflinger/。
实验:如何通过设置BOARD_HAVE_BLUETOOTH来避免编译蓝牙。
办法:删除 rm -rf out/target/product/abcde/obj/STATIC_LIBRARIES/libaudiointerface_intermediates/ -rf
在vendor/vendorabc/abcde/BoardConfig.mk加入BOARD_HAVE_BLUETOOTH := false,才可以让宏BOARD_HAVE_BLUETOOTH生效.
2.5.2 TARGET_CPU_ABI
引用处:build/core/
2.6 build/core/
device.mk
prelink-linux-arm.map
2.7 build/core/Makefile
2.7.1 system.img制作
system.img的制作是由build/core/Makefile的宏build-systemimage-target调用MKYAFFS2来完成的。
命令MKYAFFS2定义于build/core/config.mk:
MKYAFFS2 := $(HOST_OUT_EXECUTABLES)/mkyaffs2image$(HOST_EXECUTABLE_SUFFIX)
图 system.img制作流程
2.7.2 prop设定
2.8 build/core/ definitions.mk
transform-java-to-classes.jar
create-resource-java-files
transform-host-o-to-executable-inner
transform-o-to-executable-inner
transform-o-to-shared-lib-inner
transform-host-c-or-s-to-o-no-deps
transform-host-cpp-to-o
transform-cpp-to-o
- Android编译系统
- Android编译系统结构
- Android的编译系统
- Android的编译系统
- Android 系统编译
- Android编译系统
- android系统编译
- Android 编译系统
- android编译系统 makefile
- Android 的编译系统
- Android编译系统
- Android 编译系统架构
- Android编译系统结构
- Android系统编译环境
- android编译系统学习
- Android 系统编译安装
- Android系统源码编译
- Android的编译系统
- datagridview未选中记录语句怎么写?
- HTML一种鼠标移动列变色效果
- 程序员流程图
- java.awt.Button类
- java.awt.TextField类
- Android编译系统
- 字符集与字符集编码简介
- 成功的七个谎言
- MYSQL数据的导出导入与版本的转换
- Hibernate中,left join、inner join以及left join fetch区别
- asp.net2.0生成一个复杂的验证码,背景随机,字体随机,中英文数字随机
- GMF 经验点滴积累(四)-修改GMF的outline tree,使其按类别展示View
- Laboratory for Laser Remote Sensing University of South Florida
- usaco——concom