适用于 Android 的 Firefox¶
适用于 Android 的 Firefox 由三个层组成
GeckoView:这是一个将 Gecko API 引入 Android 的库。
Android 组件:这是一个可重用浏览器构建块的库。
前端 (Fenix):指的是前端界面。
所有三个组件都可以在 mozilla-central
中找到。要为这三个组件中的任何一个做出贡献,您需要设置成为 Firefox 的贡献者。
Mozilla Central 设置¶
要设置 Mozilla Central,您可以按照 Mozilla 源代码文档中提供的通用说明进行操作
此外,要专门为 mozilla-central 设置,您可以参考以下指南
引导程序¶
引导程序为 GeckoView 和 Fenix(适用于 Android 的 Firefox)开发配置所有内容。
确保您已检出
mozilla-central
。如果这是您第一次执行此操作,则可能需要一些时间。
git checkout central/default
如果您使用的是 Mac,则需要安装 Xcode 构建工具。您可以通过以下两种方式之一执行此操作:安装 Xcode 或从命令行仅安装工具,方法是运行 xcode-select --install
并按照屏幕上的说明进行操作。
如果您使用的是具有 Apple Silicon M2 或 M3 处理器的较新 Mac,则还需要安装 Rosetta 以实现向后兼容性
softwareupdate --install-rosetta
您需要为 GeckoView/适用于 Android 的 Firefox bootstrap
。最简单的方法是运行以下命令
./mach --no-interactive bootstrap --application-choice="GeckoView/Firefox for Android"
注意
--no-interactive
参数将使bootstrap
从头到尾运行,而无需您进行任何输入。它将自动接受任何许可协议。--application-choice="GeckoView/Firefox for Android"
参数在使用--no-interactive
时是必需的,以便为正确的应用程序(而不是默认应用程序)完成“引导”。
如果您想自己进行所有选择和/或阅读许可协议,则只需运行
./mach bootstrap
然后,您应该选择以下选项之一
A- 您不会更改或调试任何 C++ 代码:¶
选择:3. GeckoView/Firefox for Android Artifact Mode
工件模式下载预构建的 C++ 组件,而不是在本地构建它们,用带宽换取时间。(更多关于工件模式的信息)
B- 您打算更改或调试 C++ 代码:¶
选择:4. GeckoView/Firefox for Android
这将从头开始构建 GeckoView,并且比上面的选项花费更多时间。
一旦 ./mach bootstrap
完成,它将自动将配置写入新的 mozconfig
文件中。如果您已经有 mozconfig
,则 mach 将输出一个新的配置,您应该将其附加到现有文件中。
从命令行构建¶
为了获取我们刚刚进行的配置更改,我们需要从命令行构建。这将更新生成的源代码、编译本机代码并生成 GeckoView AAR 以及示例和测试 APK。
./mach build
使用 Android Studio 构建¶
安装 Android Studio。
如果在 Windows 上,请创建一个 JAVA_HOME 环境变量并将其设置为 Android Studio jbr 的路径。使用默认安装位置,它是
C:\Program Files\Android\Android Studio\jbr
。从工具栏中选择文件 -> 打开
导航到
mozilla-central
源代码目录的根目录,然后单击“打开”如果它询问您是否要使用 Gradle 包装器,请单击是。
如果 Gradle 同步没有自动启动,请选择文件 > 使用 Gradle 文件同步项目。
等待项目索引和 Gradle 同步。同步后,工作区将重新配置以显示不同的项目。
注释包含 GeckoView 内部使用的自定义 Java 注释
app 包含 geckoview 构建设置和 omnijar。omnijar 包含 Gecko 和 GeckoView 中不是用 Java 或 Kotlin 编写的部分
geckoview 是 GeckoView 项目。这里包含与 GeckoView 相关的所有 Java 文件
geckoview_example 是使用 GeckoView 构建的示例浏览器。
现在您已设置完毕并准备就绪。
重要提示:目前,从 Android Studio 或直接从 Gradle 构建不会(重新)编译本机代码,包括 C++ 和 Rust。这意味着您需要自己运行 mach build
以获取对本机代码的更改。 错误 1509539 跟踪使 Android Studio 和 Gradle 自动执行此操作。
如果您想为 Kotlin 设置代码格式,请参考 IntelliJ IDEA 配置。
移动设备和模拟器¶
默认的 mozconfig 文件(位于 mozilla-central
的根目录中)包含在 x86、arm64 和 x86_64 架构中运行移动测试设备的配置。
使用默认的 mozconfig 配置,您机器的架构应与测试设备的架构匹配。在基于 Apple Silicon 构建的较新的 Mac 上,可能不需要更改 mozconfig,因为它在 arm64 上运行,并且大多数移动设备都在 arm64 上运行。
如果您的机器与物理测试设备的架构不同,则应取消注释与您的测试设备匹配的选项。通常,这意味着取消注释 arm64 选项
ac_add_options --target=aarch64
注意:使用模拟器时,mozconfig 目标配置很可能需要与您机器的架构匹配。
自定义 AVD¶
创建自定义 AVD 可能需要几个原因,例如,默认模拟器设置可能对于某些任务来说太旧了,并且可能需要运行一些更新版本的 API 或其他内容。
假设以下环境变量已设置(版本/操作系统可能会更改)
JAVA_HOME=$HOME/.mozbuild/jdk/jdk-17.0.12+7
ANDROID_HOME=$HOME/.mozbuild/android-sdk-linux
ANDROID_AVD_HOME=$HOME/.mozbuild/android-device/avd
PATH=$ANDROID_HOME/cmdline-tools/12.0/bin/:$PATH
您可以通过以下方式识别系统上已安装的可使用包
sdkmanager --list
它将输出可用和已安装包的列表。感兴趣的包是 system-images
并遵循规则 system-images;android-API;pkg;arch
,其中
API
是 Android API 级别pkg
是已安装的包集,例如default
、google_apis
、google_apis_playstore
最后一个是模拟器架构,通常坚持使用
x86_64
。
您将使用的系统映像包需要安装,因此,如果它不在上面的列表中,请使用(在此示例中,它安装了 Android 14(API 级别 34)、default
包和 x86_64
架构的包)。
sdkmanager "system-images;android-34;default;x86_64"
然后可以使用以下命令创建 AVD
avdmanager create avd --name android14-x86_64 --package "system-images;android-34;default;x86_64"
参数中传递的名称可以是您想要的任何名称,并且包是已安装列表中的一个。然后需要修改 android_device.py 中的条目才能使用 mach android-emulator
,将定义更改为与上面创建的 AVD 的名称匹配。以下示例
diff --git a/testing/mozbase/mozrunner/mozrunner/devices/android_device.py b/testing/mozbase/mozrunner/mozrunner/devices/android_device.py
index 4f883261d45c1..07f91c1ab800e 100644
--- a/testing/mozbase/mozrunner/mozrunner/devices/android_device.py
+++ b/testing/mozbase/mozrunner/mozrunner/devices/android_device.py
@@ -151,7 +151,7 @@ AVD_DICT = {
),
"x86_64": AvdInfo(
"Android x86_64",
- "mozemulator-x86_64",
+ "android14-x86_64",
[
"-skip-adb-auth",
"-verbose",
创建 avd 后,可以通过更改 config.ini
文件(位于 $ANDROID_AVD_HOME/<avd-name>.avd/
下,例如,在上面的示例中为 $HOME/.mozbuild/android-device/avd/android14-x86_64/config.ini
)来对其进行自定义。建议通过将值 hw.keyboard
更改为 yes
来启用物理键盘(否则只有虚拟键盘输入才能工作)。
使用 Android Studio 的自定义 mozconfig¶
开箱即用,Android Studio 将使用默认的 mozconfig 文件,通常位于 mozilla-central
检出的根目录中的 mozconfig
中。
要使 Android Studio 使用自定义位置中的 mozconfig,您可以将以下内容添加到您的 local.properties
中
mozilla-central.mozconfig=relative/path/to/mozconfig
请注意,当从命令行运行 mach 时,此值将被忽略,并且将改为使用 mach 环境中的 mozconfig。
要覆盖 mach 使用的 mozconfig,您可以使用 MOZCONFIG 环境变量,例如
MOZCONFIG=debug.mozconfig ./mach build
项目特定说明¶
现在您已做好准备并完成设置,您可以访问以下特定项目说明
GeckoView:为 GeckoView 做出贡献
Android 组件:Mozilla Android 组件