现在的位置: 首页 > 综合 > 正文

Android编译系统

2014年09月05日 ⁄ 综合 ⁄ 共 2229字 ⁄ 字号 评论关闭

 

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

 

 

抱歉!评论已关闭.