在Firefox for Android 42或更高版本

时间:2016-03-16 23:48:05

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

我正试图重新开发一个旧项目,这是Firefox for Android的扩展,我正在开发中。我有2部电话,一部是个人电话,也是我的工作之一。在我的手机中,我有一个旧版本的Firefox(40)。它的工作方式与以前完全相同。但是,在我工作电话的升级版本(Firefox 46)中,我无法安装 .xpi 。我总是看到" Blocked插件"弹出文本" 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;

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

  

我们的第一个目标是让附加组件签名更容易一些   开发人员。这个API使您可以上传XPI并返回   如果它通过了所有验证检查,则签名加载项。

  

Firefox 48 :(从Firefox 46推出)。发行版和Beta版   Firefox for Desktop不允许使用未签名的扩展名   安装,没有覆盖。 Firefox for Android将强制执行加载项   签署,并将保留一个偏好 - 将删除   future release - 允许用户禁用签名强制执行。

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

我已经尝试安装每晚版本,因为它适用于开发人员。我将xpinstall.signatures.required更改为false。但是,行为是相同的信息。

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

1 个答案:

答案 0 :(得分:4)

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

如果直接导航到file:///网址,则

无法安装加载项 Firefox似乎已通过直接导航到file:///链接(我尚未测试已签名的扩展程序)来禁用安装未签名的扩展程序。因此,使用adb shell am start -a android.intent.action.VIEW方法使用意图导致Firefox导航到file:///mnt/sdcard/extentionFile.xpi URL只会显示“已阻止的加载项”对话框,而无需允许,您可以使用在你的问题中包含了截图。如果手动输入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;

在手机上,您需要选择$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

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

单击/选择 .xpi 文件。在这种情况下,那是 view-source.xpi

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

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

之后,执行安装: