为多个SDK版本开发Firefox Addon

我看到每个
cfx tools总是使用自己的minVersion和maxVersion生成xpi.但是,这些仅限于SDK兼容的版本,例如, SDK 1.14仅适用于FF 21 – 25.0a1,SDK 1.17仅适用于FF 26 – 30.我的问题是:

>每次新版本发布时,我是否需要使用新SDK打包我的扩展程序?
>将来如何维护和更新我的扩展? Addon Developer Hub是否提供了为多个SDK版本提交相同扩展名的方法?我试图环顾四周但找不到提交多个版本的方法.
我想将FF 21作为最低版本,因为那是内置SDK的版本.我的扩展目前使用SDK 1.14和SDK 1.17进行编译,仅进行修饰(语法)调整.

最佳答案 开发人员中心允许您选择加载项兼容的Firefox版本.这只是
setting the minVersion and maxVersion in the install.rdf的GUI.只要您不使用需要Firefox 22的模块或方法,您使用的SDK版本无关紧要,因为正在运行的SDK的版本由版本决定在用户的浏览器上.

很难找到模块特定的兼容性(您可以随时访问特定模块的文档并查看编辑历史记录),但请查看SDK API Lifecycle以了解可以使用哪些模块.一些值得注意的例子是:

> new UI modules需要FF29,其中一些功能需要FF30.
> widget module从FF 29开始被弃用,由上述代替.

处理上述内容以实现向后兼容的一种方法是执行以下操作:

const { version } = require('sdk/system/xul-app');
if (version < 29) var widget = require("sdk/widget").Widget({...});
else var button = require("sdk/ui/button/action")({...});

所以,要明确:

>除非您要使用新模块,否则使用哪个版本的SDK无关紧要.
>不,您不应该为您的插件制作多个版本.如果要为新浏览器使用新模块,请按照上面的代码示例进行操作.

点赞