在 Firefox 中为 Android 版本 42 或更高版本安装未签名的 XPI

Installing unsigned XPIs in Firefox for Android version 42 or newer

我正在尝试重新开发一个旧项目,这是 Android 的 Firefox 扩展。我有 2 个 phone,一个是个人的,一个是我的工作。在我的中,我有一个旧版本的 Firefox (40)。它的工作原理和以前完全一样。但是,在我的作品phone(Firefox 46)的升级版中,我无法安装.xpi[=​​37=]。我总是看到带有文本 "Firefox prevented an add-on from installing on your device":

的 "Blocked addon" 弹出窗口

[1

我有偏好 xpinstall.signatures.required = false。但是,它似乎不起作用。我还启用了 Android 调试。我这样做:

#4 - This will copy the XPI to the phone SD card.
adb push $OUTPUT_DIR/$APP_NAME.xpi /sdcard/$APP_NAME.xpi;

#5 - This will start the Firefox App with the XPI to install
adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -d file:///mnt/sdcard/$APP_NAME.xpi -n $ANDROID_APP_ID/.App;

在旧版本的 Firefox 中它可以工作;在新的中,没有。原因如下:

Our first one aims to make add-on signing a little easier for developers. This API enables you to upload an XPI and get back the signed add-on if it passes all the validation checks.

并且:

Firefox 48: (Pushed from Firefox 46). Release and Beta versions of Firefox for Desktop will not allow unsigned extensions to be installed, with no override. Firefox for Android will enforce add-on signing, and will retain a preference — which will be removed in a future release — to allow the user to disable signing enforcement.

但我需要能够在没有验证的情况下进行编程:每次我引入一个小的变化时都必须签署一个扩展是非常有压力的(即使只是为了检查某些东西是否有效)。

我已经尝试安装夜间版本,因为它是为开发人员准备的。我将 xpinstall.signatures.required 更改为 false。但是,行为是相同的消息。

那么,我们应该怎样发展呢?这太不切实际了!

我使用来自 MDN 的 Walkthrough 示例对此进行了测试。我的是运行 Firefox 48.0,发布版。此答案假定 xpinstall.signatures.requiredabout:config 中设置为 false

如果直接导航至 file:///,则不会安装附加组件 URL:
Firefox 似乎已通过直接导航到 file:/// link 来禁用安装未签名的扩展(我尚未测试已签名的扩展。)。因此,使用 adb shell am start -a android.intent.action.VIEW 方法使用意图使 Firefox 导航到 file:///mnt/sdcard/extentionFile.xpi URL 只会弹出 "Blocked Add-on" 对话框,没有允许的选项,您在问题中包含了屏幕截图。如果您手动输入 URL.

,此对话框是相同的

您可以在未签名的情况下安装附加组件:

您可以通过在 Firefox 中导航到包含 .xpi[=​​75=] 文件(例如 file:///mnt/sdcard/)的目录来加载未签名的扩展,然后 clicking/touching 该文件.

因此,对于 adb,您会希望它打开目录,而不是尝试让 Firefox 直接打开文件。根据您的问题,您将要使用的 adb 命令是:

adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -d file:///mnt/sdcard/ -n $ANDROID_APP_ID/.App;

在您的 phone 上,您需要 select $APP_NAME.xpi 文件。您将看到一个或多个屏幕,您可以通过这些屏幕单击以安装您的附加组件。

这些是我在测试时截取的屏幕。要有一个空目录,我使用 /mnt/sdcard/testing/ 而不是 /mnt/sdcard/.

首先,我使用 adb 导航到 Firefox 中的目录(这是为了方便,您可以通过 phone 的用户界面导航到它)使用命令:

adb" shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -d file:///mnt/sdcard/testing/ -n org.mozilla.firefox/.App

这会导致 Firefox 打开目录 (file:///mnt/sdcard/testing/):

Click/select 你的 .xpi[=​​75=] 文件。在这种情况下,即 view-source.xpi.

将显示 "Blocked Add-on" 对话框。此对话框将具有 "Allow" 安装的选项。 [您可以通过在 about:config 中将 xpinstall.whitelist.required 设置为 false 来跳过此对话框。但是,这仍然不会让您通过使用意图直接导航到文件或将其键入 Firefox UI]:
来安装

然后,一个对话框询问您是否要安装未经验证的附加组件:

之后,执行安装: