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

gal*_*007 7 firefox android firefox-addon firefox-addon-sdk

我正在尝试重新开发一个旧项目,这是Firefox for Android的扩展,我正在开发.我有2部电话,一部是个人电话,也是我的工作之一.在我的手机中,我有一个旧版本的Firefox(40).它的工作方式与以前完全相同.但是,在我的工作电话的升级版本(Firefox 46)中,我无法安装.xpi.我总是看到"阻止的插件"弹出窗口,其中包含"Firefox防止在您的设备上安装附加组件"的文字:

[1

我有偏好xpinstall.signatures.required= false.但是,它似乎无法奏效.我也启用了Android Debug.我这样做:

#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;
Run Code Online (Sandbox Code Playgroud)

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

我们的第一个目标是让开发人员更轻松地进行附加签名.通过此API,您可以上传XPI并在通过所有验证检查后获取已签名的附加组件.

和:

Firefox 48 :(从Firefox 46推出).Firefox for Desktop的发行版和Beta版不允许安装未签名的扩展,没有覆盖.Firefox for Android将强制执行加载项签名,并将保留首选项(将在以后的版本中删除),以允许用户禁用签名强制执行.

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

我已经尝试安装每晚版本,因为它适用于开发人员.我换xpinstall.signatures.requiredfalse.但是,行为是相同的消息.

那么,我们应该如何以这种方式发展呢?这太不切实际了!

Mak*_*yen 5

我使用MDN 的演练示例对此进行了测试。我运行的是 Firefox 48.0 发行版。该答案假设xpinstall.signatures.required设置为falsein about:config

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

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

您可以通过在 Firefox 中导航到包含.xpi文件的目录(例如file:///mnt/sdcard/),然后单击/触摸该文件来加载未签名的扩展。

因此,因为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;
Run Code Online (Sandbox Code Playgroud)

然后,您需要在手机上选择$APP_NAME.xpi. 您将看到一个或多个屏幕,您可以通过这些屏幕单击来安装附加组件。

这些是我在测试时捕获的屏幕。为了拥有一个空目录,我使用/mnt/sdcard/testing/而不是/mnt/sdcard/.

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

adb" shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -d file:///mnt/sdcard/testing/ -n org.mozilla.firefox/.App
Run Code Online (Sandbox Code Playgroud)

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

单击/选择您的.xpi文件。在本例中,即view-source.xpi

将显示“阻止的加载项”对话框。该对话框将包含“允许”安装的选项。xpinstall.whitelist.required[您可以通过设置为falsein来跳过此对话框about:config。但是,这仍然不允许您通过使用意图直接导航到文件或将其输入到 Firefox UI 来安装]:

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

之后,执行安装: