为多SDK版本开发Firefox插件
我看到每一个都总是用自己的minVersion和maxVersion生成xpi。但是,这些仅限于SDK兼容的版本,例如,SDK 1.14仅适用于FF 21-25.0a1,SDK 1.17仅适用于FF 26-30。我的问题是:为多SDK版本开发Firefox插件,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,我看到每一个都总是用自己的minVersion和maxVersion生成xpi。但是,这些仅限于SDK兼容的版本,例如,SDK 1.14仅适用于FF 21-25.0a1,SDK 1.17仅适用于FF 26-30。我的问题是: 每次发布新版本时,我是否需要用新SDK打包扩展 将来如何维护和更新扩展?是否提供了为多个SDK版本提交相同扩展的方法?我试着四处看看,但找不到提交多个版本的方法。 我想让FF 21作为最低版本,因为这是一个内置SDK的版本。我的扩展目前使用SDK 1.14和SDK 1.17
开发者中心允许您选择插件与哪些版本的Firefox兼容。这只是一个图形用户界面。只要您不使用需要Firefox 22+的模块或方法,那么使用哪个版本的SDK就无关紧要,因为运行的SDK版本取决于用户浏览器上的版本 很难找到特定于模块的兼容性(您可以随时转到特定模块的文档并查看编辑历史记录),但请查看以了解可以使用哪些模块。一些值得注意的例子是:
- 需要FF29,其某些功能需要FF30
- 从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")({...});
const{version}=require('sdk/system/xul-app');
if(version<29)var widget=require(“sdk/widget”).widget({…});
else-var-button=require(“sdk/ui/button/action”)({…});
因此,需要明确的是:
确实,您必须使用valid,但通常不需要重新打包您的插件,除非SDK中的更改直接影响您的插件 这是因为默认情况下,不会检查最大目标版本 从: 严格兼容性 一个布尔值,指示当应用程序的版本大于其最大版本时,是否应启用加载项。默认情况下,此属性的值为false,这意味着不会对max版本执行兼容性检查
<em:strictCompatibility>true</em:strictCompatibility>
true
通常,不需要限制兼容性:并非所有的新版本都会破坏您的扩展,如果它托管在AMO上,如果检测到潜在风险,您将提前几周收到通知。此外,即使在短时间内禁用扩展,也会给用户带来不好的体验。如果你的插件做了一些可能被Firefox更新破坏的事情,那么这大概是你唯一需要设置的时候了。如果您的外接程序具有二进制组件,则不需要设置此标志,因为带有二进制组件的外接程序始终要接受严格的兼容性检查(因为对于每个主要的应用程序版本,都需要重新生成二进制组件)
还有一个
minVersion和maxVersion应指定已测试应用程序的版本范围。特别是,您永远不应该指定大于应用程序当前可用版本的maxVersion,因为您不知道即将发生什么API和UI更改。随着兼容性的更新,不必仅仅为了增加maxVersion而发布扩展的全新版本
从技术上讲,您可以使用通配符,但文档多次提到AMO验证并可能拒绝版本不正确的插件。我想检查版本是一种方法。然而,我认为第一点是错误的。新SDK有时甚至会对模块名称做出突破性的更改(例如,
SDK/system/xul-app
过去在旧SDK中是xul-app
),目前有许多模块被定义为实验性的。缺乏关于向后兼容性的文档,并且可能会拒绝使用旧SDK(请参阅我对@kapep的评论)让我觉得实际上Mozilla不希望开发人员支持/使用旧SDK作为新插件。我说的对吗?从SDK 1.14和FF21开始,第1点是有效的,这就是您所说的希望支持的。他们不希望开发人员使用旧版本的SDK,但您仍然可以使用新SDK制作支持旧浏览器的插件。您必须针对使用每个版本SDK的浏览器进行测试。1.14是FF21,1.15是FF26,1.16是29,1.17是33您对可能被拒绝的担心使我深入研究了文档,我发现:除特殊情况外,我们接受附加SDK的两个最新小版本。如果验证器警告该插件使用的是过时的SDK版本,则如果该插件的版本比建议的版本早一个,则可接受全面审查。否则,它只能进行初步审查。