Android编译系统

1. Android编译系统
编译脚本主要位置:

*.mk

build/core/

build/tools/

build/envsetup.sh:定义函数mm,mmm,choosecombo等;


2.模块编译
2.1Java模块

通常Java模块的编译提供一个Android.mk就可以了。

LOCAL_PACKAGE_NAME:模块名。

LOCAL_SRC_FILES:代码;


2.2C/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:编译时的目录;

2.3build/envsetup.sh

定义函数mm,mmm,choosecombo等。


2.4choosecombo

定义于: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.1BOARD_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.2TARGET_CPU_ABI

引用处:build/core/
2.6build/core/

device.mk

prelink-linux-arm.map
2.7build/core/Makefile
2.7.1system.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.2prop设定


2.8build/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

更多相关文章

  1. Android(安卓)编译环境配置搭建(Ubuntu 12.04)及环境导致编译错
  2. 启动android后没有应用图标,找不到应用程序
  3. 如何直接使用Android(安卓)internal and hidden APIs
  4. android源代码编译
  5. Android(安卓)Studio中的六种依赖
  6. Android(安卓)开发环境的搭建 个人笔记
  7. Android:实现一种浮动选择菜单的效果
  8. EditText的光标选择(android.text.Selection)&输入指定字符
  9. Android(安卓)Toolchain与Bionic Libc

随机推荐

  1. 制作Android Root Ramdisk
  2. Android中的AnimationSet使用
  3. Android 安装路径问题 -- 导致无法启动模
  4. Failed to fetch URL https://dl-ssl.goo
  5. Android 添加图片水印(图片+文字)
  6. Android 根据Video绝对路径获取其缩略图
  7. 浅析:Pulltorefresh使用中碰到的问题
  8. Android的平台架构
  9. INSTALL_FAILED_CONFLICTING_PROVIDER 安
  10. Android中使用全屏