标签:rod 用户 ace 脚本 包含 总结 生成 根目录 comm
Android源码编译学习小结
笔者之前在学习安卓系统源码的编译,为了能够印象深刻,粗略的总结了以下内容,希望对我一样的初学者有一些帮助。
对android编译环境进行初始化很简单,分为两步。第一步打开终端输入source build/envseup.sh加载所需的文件。
$ source build/envseup.sh
including device/asusource build/envseup.shs/grouper/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/samsung/toroplus/vendorsetup.sh
including device/samsung/toro/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash
从命令的输出可以知道,文件build/envsetup.sh在加载的过程中,又会在device目录中寻找那些名称为vendorsetup.sh的文件,并且也将它们加载到当前终端来。另外,在sdk/bash_completion目录下的adb.bash文件也会加载到当前终端来,它是用来实现adb命令的bash completion功能的。也就是说,加载了该文件之后,我们在运行adb相关的命令的时候,通过按tab键就可以帮助我们自动完成命令的输入。
第二步是执行命令lunch,如下所示:
$ lunch
You‘re building on Linux
Lunch menu... pick a combo:
1. full-eng
2. full_x86-eng
3. vbox_x86-eng
4. full_mips-eng
5. full_grouper-userdebug
6. full_tilapia-userdebug
7. mini_armv7a_neon-userdebug
8. mini_armv7a-userdebug
9. mini_mips-userdebug
10. mini_x86-userdebug
11. full_mako-userdebug userdata.img:将被挂载为 /data,包含了应用程序相关的数据以及和用户相关的数据。
12. full_maguro-userdebug
13. full_manta-userdebug
14. full_toroplus-userdebug
15. full_toro-userdebug
16. full_panda-userdebug
Which would you like? [full-eng]
我们看到lunch命令输出了一个Lunch菜单,该菜单列出了当前Android源码支持的所有设备型号及其编译类型。例如,第一项“full-eng”表示的设备“full”即为模拟器,并且编译类型为“eng”即为工程机。
当我们选定了一个Lunch菜单项序号(1-16)之后,按回车键,就可以完成Android编译环境的初始化过程。例如,我们选择1,可以看到以下输出:
Which would you like? [full-eng] 1
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.8.0-31-generic-x86_64-with-Ubuntu-13.04-raring
HOST_BUILD_TYPE=release
BUILD_ID=JOP40C
OUT_DIR=out
============================================
我们可以看到,lunch命令帮我们设置好了很多环境变量。通过设置这些环境变量,就配置好了Android编译环境。
在执行编译指令之前,为了确保编译环境的Api匹配所要编译的源码版本,我们会先进行make update-api进行Api更新,在此步骤之中可能会遇到各种问题,请读者们自行上网搜索解决,直到更新完成后执行make指令进行编译,注:对于整个系统源码编译,必须在系统源码根目录下执行。
在Android编译系统在编译过程中,会通过根目录下的Makefile脚本加载build/core/main.mk脚本,接着build/core/main.mk脚本又会加载build/core/Makefile脚本,而Android系统镜像文件就是由build/core/Makefile脚本负责打包生成的。
所有的编译产物都将位于 /out 目录下,该目录下主要有以下几个子目录:
Build 的产物中最重要的是三个镜像文件,它们都位于 /out/target/product// 目录下。
标签:rod 用户 ace 脚本 包含 总结 生成 根目录 comm
原文地址:http://www.cnblogs.com/xiaoliu500/p/7364549.html