在构建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
一旦有了构建 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 移植到你的设备,或是等别人完成移植。我们当然比较希望你可以帮忙移植!
这将是一个很好的喝咖啡时间,需要将所有所需的代码提取、构建并引导到 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-train
、v1.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
是你要复制到目标位置(同样也包含后面的斜线,它很重要!)。
如果你采用了这个方法迁移代码,可以跳过本文余下的部份,然后直接跳到的“构建”部份。
更新你的B2G树
当存储库更新到了新版本,你要更新你的B2G tree。./sync 命令不会更新你的B2G树。要做到这一点,你可以运行下面的命令:
git fetch origin git checkout origin/master
你可以运行一下命令,检查是否工作正常:
git show HEAD
并检查提交的版本是否与最新提交版本显示匹配:https://github.com/mozilla-b2g/B2G/commits/master