如何在自定义版本的Firefox for Android(Fennec)中添加扩展程序?

时间:2016-07-26 15:00:17

标签: android firefox firefox-addon build-process firefox-addon-sdk

我正在尝试在自定义版本的Firefox for Android(Fennec)中加入扩展程序,以便在用户安装APK时,Fennec浏览器已经安装了扩展程序。

我正在使用Fennec v48.0b6的基线。值得注意的是,这是beta版本,虽然我不认为它应该有所作为。

应该工作的简单方法

这样一个过程的文档似乎确实存在,但我无法让它工作。这是Mozilla Wiki has a guide。它以及我发现的解决方案的其他提示表明我需要在Firefox工作区的某个地方使用“分发”文件夹。我有一个文件夹结构如下:

  • 火狐-48.0b6
    • 定制DIST
      • 资产
        • 分布
          • preferences.json
          • 扩展
            • MY-extension.xpi

其中'firefox-48.0b6'是包含所有源目录的根文件夹,例如b2g,浏览器,chrome,mobile等。这匹配sample directory structure provided by Mozilla

我已将以下行添加到我的mozconfig:

ac_add_options --with-android-distribution-directory="/data/workspaces/firefox/firefox-48.0b6/custom-dist"

正确跟踪绝对分布位置。如果此路径未指向分发,则在运行mach configure时出现错误,因此必须正在读取。

扩展程序的XPI名称需要与扩展程序的install.rdf文件中给出的ID(如同一个Mozilla Wiki页面上所示)相匹配。我已经更改了install.rdf文件和XPI名称,以便它们匹配。

完成所有这些操作后,当我安装APK时,我仍然没有在附加组件列表中看到我的扩展程序。

我尝试将其付诸实践

我已经尝试了一些额外的东西(没有一个能解决我的问题):

  • 在mobile / android / moz.configure中将MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER标志更改为False。 Mozilla Wiki中提到了这一点。 Bugzilla似乎表明此版本中仍然存在is a bug,因此可能不值得进一步查询。
  • 从上面的点开始阅读关于链接错误的评论(特别是comment 2),我尝试在mobile / android / confvars.sh中设置将MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER=1更改为MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER=因此,它不会被视为真正的价值。
  • 我尝试完全从confvars.sh中删除MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER
  • 尝试将分发文件夹放入objdir-droid / dist / bin,如this StackOverflow问题和答案中所示。值得注意的是,Mozilla Wiki上没有提到这一点。从this Bugzilla bug报告看起来它与旧的做事方法有关。

我被困的地方

最终,我还没有安装包含默认扩展程序的Android版Firefox。有几点可能是问题的根源,但我对这个过程肯定不够了解,即:

  • 我正在使用Android版的Firefox版本作为我的基线。 这是否会导致包含分发的问题?
  • 我将APK直接推送到/ system / priv-app而不是安装它(在Android操作系统本身或使用adb install)。 这是否会影响分发是否适用?

我错过了什么才能让它发挥作用?

修改

我已经意识到我在分发目录中还需要一个最小的preferences.json文件。但是,包括这个并没有解决问题...

2 个答案:

答案 0 :(得分:0)

我知道适用于Android的IceCat移动浏览器是包含预装扩展程序的衍生产品。请记住,他们是基于ESR频道的,所以您可能需要稍微搞乱他们的构建脚本,但我要看看他们的实现。这是项目页面:

https://www.gnu.org/software/gnuzilla/

如果那不好,那么可以看看TOR firefox发行版(我很确定它们默认包含noscript)。

答案 1 :(得分:0)

我按照以下链接中提供的步骤操作, https://wiki.mozilla.org/Mobile/Distribution_Files 它有效..

重点是 - 确保使用附加组件install.rdf中指定的ID命名附加XPI。

如果您的扩展程序是最近构建的,则应用程序ID在扩展程序的manifest.json文件中提供。

这里提供了如何构建适用于Android的Firefox(fennec)的分步教程 https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_for_Android_build

希望这可以帮助某人。