译文 - 构建 Android 文件系统的步骤

原文路径:http://source.android.com/source/building.html

翻译全文:


构建文件系统

构建系统的基本步骤如下:


初始化

通过envsetup.sh脚本来初始化系统环境。值得注意的是,在命令中使用 来代替source不仅可以少敲一些字符,而且在文档中这种简短的方式用的更多一些。

$ source build/envsetup.sh

或者

$ . build/envsetup.sh


选择一个平台

通过 lunch 选择要编译的目标,具体的配置可以放到命令行参数当中。

$ lunch full-eng

上面的例子演示的是编译一个完整模拟器的命令,在这个过程中打开了全部的调试选项。

如果运行 lunch 命令时不带任何参数,会弹出一个选择目标平台的菜单。

所有目标平台的名字都是依照“构建名称-构建类型”的格式,

构建名称如下:

构建名称

设备

注释

full

emulator

选中所有语言、应用程序和输入法

full_maguro

maguro

运行在Galaxy Nexus GSM/HSPA+ ("maguro")平台上的完整版本

full_panda

panda

运行在PandaBoard ("panda")的完整版本

构建类型如下:

构件类型

使用方法

user

访问受限,适合于生产版本。limited access; suited for production

userdebug

与“user”类型类似,但是拥有root权限和调试权限,适合于调试版本。like "user" but with root access and debuggability; preferred for debugging

eng

开发过程用的配置设置,包含一些额外的调试工具。development configuration with additional debugging tools

关于实际平台的构建和在实际平台上运行的更多的信息,可以参考针对设备的系统构建


编译代码

Make可以编译所有工程。GNU make 通过一个 -jN 参数,可以并行地处理多个任务。通用的做法是,使用N个任务,N介于用于编译的计算机的硬件线程数的1倍和2倍之间。例如,在一个双核的E5520机器(2CPU,每个CPU4核,一个核心可以执行2个线程),最快的编译方法是使用介于make -j16make -j32之间的任务数进行编译。

$ make -j4


启动运行

你可以在模拟器上运行,也可以把系统刷到设备上。切记,在lunch的时候,你已经选好了编译目标,最好不要在同一个平台上运行不同的系统。

刷设备

刷设备时需要使用fastboot命令,该命令在系统编译完成后自动加入到系统路径中。首先让设备处于fastboot 模式,可以通过启动过程中手动按一些组合键或者通过以下shell 命令

$ adb reboot bootloader

一旦设备处于了fastboot模式,接着运行

$ fastboot flashall -w

-w选项用于清除设备上的/data分区,第一次刷某个特定设备时非常有用,其他时间不需要使用。

关于实际平台的构建和在实际平台上运行的更多的信息,可以参考针对设备的系统构建

模拟一个Android设备

在构建过程中,模拟器命令已经被自动加入到了系统路径中。启动模拟器,输入

$ emulator


使用ccache

CcacheCC++的编译缓存,它可以让编译速度更快。在代码树的根目录下,执行以下操作命令:

$ export USE_CCACHE=1

$ export CCACHE_DIR=/<path_of_your_choice>/.ccache

$ prebuilt/linux-x86/ccache/ccache -M 20G

查看已用的ccache,可以通过以下命令:

$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s

在OSX,使用darwin-x86来代替linux-x86。


一般编译错误的疑难解答

Java版本错误

如果使用java 1.6编译froyo 和更早的版本,或者使用java1.5编译gingerbread 和之后的版本,make会异常退出,并打印以下信息:

************************************************************

You are attempting to build with the incorrect version

of java.

Your version is: WRONG_VERSION.

The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at

    https://source.android.com/source/download.html

************************************************************

这可能是由以下原因造成的,

没有按照初始化页面介绍的方法正确安装JDK。根据要编译的Android系统的版本的不同,需要JDK5或者6版本。

以前安装的JDK版本依旧在PATH变量中,可以通过以下命令移除冲突的版本

$ export PATH=${PATH/\/path\/to\/jdk\/dir:/}


Python版本3

Repo是根据Python 2.x版本上的一些特殊功能编译出来的,不幸的是,它并不与Python 3兼容。要使用repo,需要先安装Python 2.x。

$ apt-get install python


不区分大小写的文件系统

如果你在Mac OS X操作系统上使用HFS文件系统,你可能遇到如下错误:

************************************************************

You are building on a case-insensitive filesystem.

Please move your source tree to a case-sensitive filesystem.

************************************************************

要创建一个大小写敏感的磁盘镜像,请参照初始化页面的说明。


USB权限

在大多数linux系统中,默认情况下,无授权的用户无法访问USB接口。如果看到一个权限被禁止的错误,参照初始化页面的说明来配置USB的访问方法。

如果adb已经运行,并且以上这些方法都设置好之后,依旧无法连接到设备,可以通过adb kill-server杀死adb服务进程,这会让adb进程以新的配置重新启动。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值