首页 文章

为多个SDK版本开发Firefox Addon

提问于
浏览
4

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

  • 每次新版本发布时,是否需要使用新SDK打包我的扩展程序?

  • 如何在将来维护和更新我的分机? Addon Developer Hub是否提供了为多个SDK版本提交相同扩展名的方法?我试着环顾四周但是没有内置SDK的版本't find a way to submit multiple versions. I want to make FF 21 as the minimum version, since that' . 我的扩展程序目前使用SDK 1.14和SDK 1.17进行编译,仅进行修饰(语法)调整 .

2 回答

  • 1

    开发人员中心允许您选择加载项兼容的Firefox版本 . 这只是setting the minVersion and maxVersion in the install.rdf的GUI . 只要你不知道你使用哪个版本的SDK,因为正在运行的SDK的版本由用户浏览器上的版本决定 .

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

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

    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无关紧要 .

    • 不,你不应该制作多个版本的插件 . 如果要为新浏览器使用新模块,请按照上面的代码示例操作 .

  • 1

    确实,您必须使用有效的existing application versions,但通常不需要重新打包您的插件,除非SDK中的更改直接影响您的插件 .

    原因是默认情况下不会检查最大目标版本 .

    来自install manifest documentation

    strictCompatibility一个布尔值,指示当应用程序的版本大于其最大版本时是否应启用加载项 . 默认情况下,此属性的值为false,表示不会对max版本执行兼容性检查 . <EM:strictCompatibility>真</ EM:strictCompatibility>
    通常,不需要限制兼容性:并非所有新版本都会破坏您的扩展,如果它是托管在AMO上,如果检测到潜在风险,您会提前几周收到通知 . 此外,即使在短时间内被禁用的扩展也会导致用户的糟糕体验 . 如果您的插件执行可能被Firefox更新破坏的内容,那么您应该只需要设置此项 . 如果您的加载项具有二进制组件,则不需要设置此标志,因为具有二进制组件的加载项始终需要进行严格的兼容性检查(因为无论如何都需要为每个主要的应用程序版本重建二进制组件) .

    还有一个recommendation for choosing version ranges .

    minVersion和maxVersion应指定您测试过的应用程序的版本范围 . 特别是,您永远不应该指定比当前可用的应用程序版本更大的maxVersion,因为您不知道哪些API和UI更改即将到来 . 通过兼容性更新,不必为了增加其maxVersion而发布扩展的全新版本 .

    从技术上讲,您可以使用通配符,但文档提到了几次AMO验证并可能拒绝不正确版本的插件 .

相关问题