使用自定义 GeckoView 进行开发¶
如果您是从事 Gecko(View) 开发的工程师,您可能希望使用您自己构建的 GeckoView 来构建 Focus/Klar。
为此,您需要
检出 mozilla-central(或其他分支)
设置您的系统以构建适用于 Android 的 Firefox
打包 GeckoView AAR
修改您的 Focus gradle 配置以使用您自定义的 GeckoView AAR。
设置构建系统¶
按照 构建说明 设置适用于 Android 的 Firefox 构建(ARM 或 x86)。
用于 GeckoView 开发的最小 mozconfig
可能如下所示(ARM)
ac_add_options --enable-application=mobile/android
ac_add_options --target=arm-linux-androideabi
# For x86 use: ac_add_options --target=i386-linux-android
ac_add_options --with-android-sdk="<path-to-android-SDK>"
ac_add_options --with-android-ndk="<path-to-android-NDK>"
打包 GeckoView AAR¶
设置好构建系统后,您应该能够构建和打包适用于 Android 的 Firefox。
./mach build
./mach package
现在您可以从编译后的代码创建 GeckoView AAR。
./mach android archive-geckoview
这将在您的构建输出文件夹 (MOZ_OBJDIR) 中创建一个名为 geckoview-*.aar
的文件。
$ ls <your-output-directory>/gradle/build/mobile/android/geckoview/outputs/aar
geckoview-official-withGeckoBinaries-noMinApi-release.aar
将 Focus/Klar 构建指向您的 AAR¶
在您的 Focus/Klar 检出中打开 app/build.gradle
(**不是**根目录中的 build.gradle 文件!)并找到 repositories
块。此块定义了 gradle 将在何处查找依赖项。将 AAR 的绝对路径添加如下所示
repositories {
// ...
flatDir(
name: 'localBuild',
dirs: '<absolute path to AAR>'
)
}
现在找到 dependencies
块。此块定义了编译应用程序所需的依赖项。找到已存在的 armImplementation
和 x86Implementation
语句。这些语句当前指向从我们的构建服务器提取的 AAR。替换正确的语句(x86/ARM)以使用本地 AAR 的名称
dependencies {
// ...
// armImplementation "org.mozilla:geckoview-nightly-armeabi-v7a:60.0a1"
armImplementation (
name: 'geckoview-official-withGeckoBinaries-noMinApi-release',
ext: 'aar'
)
x86Implementation "org.mozilla:geckoview-nightly-x86:60.0a1"
// ...
}
现在从 Android Studio 构建 klarArmDebug
或 klarX86Debug
构建变体(可能需要运行一次“与 Gradle 文件同步项目”),或从命令行构建并安装。
./gradlew installKlarArmDebug
./gradlew installKlarX86Debug
最后,默认渲染器可能设置为 Webview。您可以检查 focus:about
中 Gecko 徽标的存在或不存在以进行验证。您可以在 focus:test
中更改渲染引擎设置,然后按返回键以重新启动应用程序。这将存储您的引擎首选项,直到您卸载或清除数据。
您也可以在 focus-android/app/src/debug/java/org/mozilla/focus/web/Config.kt
中更改默认引擎。将 DEFAULT_NEW_RENDERER
设置为 true
将使用 GeckoView。