我开发了一个简单的Firefox扩展,完全适用于桌面计算机的Firefox。该扩展程序使用了几个与Firefox for Android不兼容的SDK元素,例如Panel
,这使得它在Android上不兼容。
我创建了两个不同版本的扩展程序 - 一个用于桌面计算机,另一个没有与Android兼容的不兼容SDK元素。一切正常,但是当我提交Mozilla AMO的两个扩展时,他们被拒绝了,我被要求将它们合并为一个扩展。
如何创建一个Firefox扩展,它在桌面Firefox上使用仅限桌面的SDK元素,而不是在Firefox for Android上使用它们?
答案 0 :(得分:3)
我最终研究了这个问题并决定写一篇关于解决方案的博客文章:http://blog.danielmittelman.com/2014/12/developing-firefox-add-ons-with-desktop-and-android-compatibility/
以下是它的要点:有panel
或ui
等SDK元素明显与Android不兼容。确保与Android的兼容性需要3个步骤:
1)仅使用必要的Android不兼容的SDK元素(您不需要的 - 不要使用)
2)识别平台并使用条件语句启用或禁用可能不兼容的代码
3)使用cfx
答案 1 :(得分:1)
鉴于您已经拥有完全不同的桌面和Android版本,您应该能够使用 [flags]中的chrome.manifest
为content
提供不同的目录,或其他类型的条目,基于使用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来提供这样的条目,你必须手动制作它们。