Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

准备第一次B2G的构建

在构建B2G之前,你需要下载编译B2G构建的代码库并做配置。本篇就是教你如何完成这一过程。

配置步骤会需要一些时间来下载构建FirefoxOS的必要文件,时间的长短取决你的网速。(如果网速在150KBps,下载整个Android代码库将要几十个小时)。等待下载是很乏味的过程,如果你读完本页及已经开始配置脚本,可以考虑去配置与试用一下Firefox OS 模拟器,或去熟悉一下应用开发文档(像是如何设计与创建一个应用、了解后续步骤的信息等)。

配置和构建 B2G 的可能需要较长的时间,你可以去做一些其他工作或者和朋友去喝杯咖啡。

如果你在等待代码下载,或者在开始前想体验一把,你可以看下下面的视频,该视频演示了构建Firefox OS准备工作。(大陆地区无法看到该视频。。。)

克隆B2G代码库

第一步,克隆一份 B2G 远程的Git版本库到本地后,才可以开始你的第一个构建。这一步不会获取所有想要的东西!相反,只会获取B2G构建系统和配置的实用工具。最主要的B2G代码都在 Mozilla Mercurial 主仓储中。

使用 git 来克隆你的版本库:

git clone git://github.com/mozilla-b2g/B2G.git

克隆之后(应该会花个几分钟),cd 到 B2G 的目录:

cd B2G

为你的设备配置专属 B2G

重要:请注意只支援 Android 4(又名:Ice Cream Sandwich)的移动设备,或是各种支持的IT平台(目前只有 Firefox OS 设备)。请确认你手机运行的是ICS,否则这个步骤很可能会因为驱动程序在某些非Nexus设备上失败。另外,如果你需要将ICS刷入移动设备,请留意有些USB集线器和刷机工具不兼容,因此可能需要将移动设备连接到内建的USB端口。
重要:如果你在 Ubuntu 12.10+ 或 Fedora 上构建,需要在检索 B2G 源码后指定 GCC4.6 为默认主编译器,(默认情况下发行版使用 GCC4.7)。可以阅读 Changing the default host compiler 了解如何做到这一点。
注意:在运行任何构建命令之前,请先阅读下面左右指令,以确保你正在做的事是正确的!

一旦有了构建 B2G 的系统环境,为了正确安装你需要设定移动设备  。要获得支持设备列表,可以使用  config.sh 工具, 如下所示:

./config.sh

这会显示一个支持设备列表,例如:

Usage: ./config.sh [-cdflnq] (device name)
Flags are passed through to |./repo sync|.

Valid devices to configure are:
- galaxy-s2
- galaxy-nexus
- nexus-4
- nexus-4-kk
- nexus-5
- nexus-5-l
- nexus-s
- nexus-s-4g
- flo (Nexus 7 2013)
- otoro
- unagi
- inari
- keon
- peak
- hamachi
- helix
- tarako
- dolphin
- dolphin-512
- pandaboard
- vixen
- flatfish
- flame
- flame-kk
- flame-l
- rpi (Revision B)
- emulator
- emulator-jb
- emulator-kk
- emulator-l
- emulator-x86
- emulator-x86-jb
- emulator-x86-kk
- emulator-x86-l
> Sony Xperia devices
- aries (Z3 Compact KK)
- aries-l (Z3 Compact L)
- leo-kk (Z3 KK)
- leo-l (Z3 L)
- scorpion-l (Z3 Tablet Compact L)
- sirius-l (Z2 L)
- tianchi-l (T2U L)
- flamingo-l (E3 L)

如果你的设备未被列出,应该马上停止来帮忙将 B2G 移植到你的设备,或是等别人完成移植。我们当然比较希望你可以帮忙移植!

注意:Firefox OS 手机页面上可以找到你手机的设备名。
注意:对于 Keon 配置和构建在 Mac 上进行是无法工作的。针对该设备的构建你需要使用 Linux。
注意:如果因为任何原因,你想要编译构建 Gecko 的某个特定版本,请阅读  Building against a custom Gecko,然后再继续。如果你想要构建一个你设备默认以外的分支(例如,建立 B2G 的特定版本),请阅读 Building a branch
注意:不同设备默认的可能是自己的分支版本,未必是主干(trunk)版本.。

这将是一个很好的喝咖啡时间,需要将所有所需的代码提取、构建并引导到 Gecko,这一过程会花费很长的时间,你可能需要通过使用 Ctrl-C 停止和稍后重新启动工作。如果你觉得某部分因为终止,而未完成,可以运行 “./repo sync” 来修复任何可能出现的问题。

为移动设备配置

首先,连接你的设备,在配置过程中需要访问它。

如果你的设备被列出,可以通过运行 config.sh 指定你的设备名称再次启动配置程序。例如,要为三星 Google Nexus S 构建,请键入:

./config.sh nexus-s
注意:如果你得到了一个"fatal: manifest 'nexus-s.xml' not available"的错误提示,这时你只需要指定一个你想要使用的分支 。请阅读 Building a branch了解详情。

在配置的刚开始,你可能需要设置颜色使用的选项,在这里你可以只选择“Y”,因为可能会想要一个自己的颜色版本。完事之后会继续配置流程。现在就可以去喝个咖啡休息一下,因为你第一次需要把构建 Boot to Gecko 中所有要的程序都抓下来。

使用系统备份配置构建

如果你的手机不再使用 Android 且 B2G tree 还没装到手机上,但聪明地作一份/system 分区的备份的话,你可以在系统备份基础上执行构建,像这样:

ANDROIDFS_DIR=<absolute path to parent dir of system dir> ./config.sh <target>

请注意,构建系统将会有默认存放目录,如“backup-inari/system”(取决于设备配置),如果打算把文件存放在默认位置,你不需要特意指定目录。

注意:如果你的手机原本就运行着 Firefox OS,而从来没有运行过Android,它仍然会细致的把文件挂载到/system 分区,这样会为你指引到正确的文件。

配置构建一个模拟器

如果你想要在模拟器中构建,可以选择一款 ARM 设备模拟器作为指定模拟器,或是使用 "emulator-x86" 来打造x86模拟器。后者速度更快,但不能准确的表现出实际移动设备的表现。

现在,举个例子,构建ARM模拟器,应该这样配置:

./config.sh emulator

在配置的刚开始,你可能需要设置颜色使用的选项,在这里你可以只选择“Y”,因为可能会想要一个自己的颜色版本。完事之后会继续配置流程。现在就可以去喝个咖啡休息一下,因为你第一次需要把构建 Boot to Gecko 中所有要的程序都抓下来。

此时你应该准备好开始构建,除非你需要更高级的信息,详情如下。

注意:模拟器无法在64位 Linux上构建。

注意:./config.sh 可能会比你想想的更耗费时间和网络资源。你可能需要通过使用 Ctrl-C 停止和稍后重新启动工作。如果你觉得某部分因为终止,而未完成,可以运行 “./repo sync” 来修复任何可能出现的问题。

构置定制一个 Gecko

可能你会想要或需要以好几种版本的 Gecko 来编译 Boot to Gecko(manifest 中预设是一种)。你可以在你抓仓储(在上述的 config.sh 之前),藉由编辑 .userconfig 来做到这件事情在举例来说,如果你要根据 mozilla-central 来编译:

export GECKO_PATH=/path/to/mozilla-central
export GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk

注意:如果是在 Mac OS X 中编译自定义版 Gecko 的话,文件系统会区分  mozilla-central 目录的大小写。

注意,可以在你抓仓储之前(也就是在上述的 config.sh 之前)或之后几步。你也可以通过多个 UserConfig 的文件(使用不同的设置 - 当然每个都需要不同 OBJDIR)和编辑,保留多个构建(与调试等)。添加一个符号连接(symlink)指向一个配置(你想要使用哪个构建就指向那个配置)。

欲了解更多信息,请阅读 Changing the Gecko source tree

建立一个分支

如果你想要构建一个非默认的分支(注:默认分支可能不是“主干”),需要调用 config.sh 并前缀分支名称,像这样:

BRANCH=branch-name ./config.sh <device>

分支名称应该是合乎逻辑的,主要是按照产品/版本的名称,比如v1-trainv1.0.0、v1.0.1、v1.1、v1.1.0hd、v1.2,以此类推。举个例子,在模拟器上构建 B2G Firefox 1.2,你需要键入:

BRANCH=v1.2 ./config.sh emulator

如果你已经运行过 config.sh,可以通过去B2G/.repo/manifests 查看分支名称,或者用 “git branch -a”,使用分支名在行的最尾端即可,如:“v1-train” 或 “master”:

  remotes/origin/master
  remotes/origin/v1-train
  remotes/origin/v1.0.0
  remotes/origin/v1.0.1

另外要了解更多关于定制,你可以查看 Customization with the .userconfig file

复制你的 B2G 树(tree)到一台新机器

如果你之前已经设置了 B2G tree,如果你又有了一代新电脑,想要把 B2G tree 从一台电脑转移到另一台电脑的话,你会发现至少比起重新配置整个事情更容易。

要做到这一点,将你旧电脑的硬盘挂载到新电脑,然后敲入下面的命令,就可以了:

rsync -a source/ dest/

source 是整个原码树(source tree)的完整路径(包括后面的斜线),而 dest 是你要复制到目标位置(同样也包含后面的斜线,它很重要!)。

注意:如果你采用把文件从一台电脑复制到另一台电脑的方法,应该确保在开始构建之前运行一次“./build.sh clean”。如果不这样做,可能会遇到编译问题。

如果你采用了这个方法迁移代码,可以跳过本文余下的部份,然后直接跳到的“构建”部份。

更新你的B2G树

当存储库更新到了新版本,你要更新你的B2G tree。./sync 命令不会更新你的B2G树。要做到这一点,你可以运行下面的命令:

git fetch origin
git checkout origin/master

你可以运行一下命令,检查是否工作正常:

git show HEAD

并检查提交的版本是否与最新提交版本显示匹配:https://github.com/mozilla-b2g/B2G/commits/master

文档标签和贡献者

 最后编辑者: chrisdavidmills,