创建与桌面和Android兼容的单个Firefox扩展

时间:2014-12-06 08:10:46

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

我开发了一个简单的Firefox扩展,完全适用于桌面计算机的Firefox。该扩展程序使用了几个与Firefox for Android不兼容的SDK元素,例如Panel,这使得它在Android上不兼容。

我创建了两个不同版本的扩展程序 - 一个用于桌面计算机,另一个没有与Android兼容的不兼容SDK元素。一切正常,但是当我提交Mozilla AMO的两个扩展时,他们被拒绝了,我被要求将它们合并为一个扩展。

如何创建一个Firefox扩展,它在桌面Firefox上使用仅限桌面的SDK元素,而不是在Firefox for Android上使用它们?

2 个答案:

答案 0 :(得分:3)

我最终研究了这个问题并决定写一篇关于解决方案的博客文章:http://blog.danielmittelman.com/2014/12/developing-firefox-add-ons-with-desktop-and-android-compatibility/

以下是它的要点:有panelui等SDK元素明显与Android不兼容。确保与Android的兼容性需要3个步骤:

1)仅使用必要的Android不兼容的SDK元素(您不需要的 - 不要使用)

2)识别平台并使用条件语句启用或禁用可能不兼容的代码

3)使用cfx

的--force-mobile标志创建和/或运行加载项

答案 1 :(得分:1)

鉴于您已经拥有完全不同的桌面和Android版本,您应该能够使用 [flags]中的chrome.manifestcontent提供不同的目录,或其他类型的条目,基于使用application=app-ID标志的应用程序ID。 Firefox for Android和Desktop Firefox的应用程序ID不同。

标记明确存在,您可以根据应用程序(例如桌面/ Android),应用程序版本,操作系统,操作系统版本等提供不同的内容。

示例chrome.manifest条目为:

content    myAddon         chrome/content-desktop/ application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
content    myAddon         chrome/content-android/ application={aa3c5121-dab2-40e2-81ca-7ea25febc110}

在上面的示例中,引用chrome://myAddon/content的网址来自桌面Firefox的chrome/content-desktop/目录和Android上的Firefox的chrome/content-android/

如果您有应用程序之间共享的内容,则可以使用以下条目:

content    myAddonShared   chrome/content-shared/

由于您使用的是Add-on SDK,因此您可能会遇到更多麻烦。我怀疑没有办法设置cfx来提供这样的条目,你必须手动制作它们。