Неизвестный ключ манифеста "приложения". предупреждение для Google Chrome

Я создал свое веб-расширение для Firefox, которое использует API расширений Chrome.

Но Firefox требует application ключ в manifest.json

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json

Если я загружу то же расширение для Google Chrome, Chrome выдаст предупреждение:

There were warnings when trying to install this extension:
Unrecognized manifest key 'applications'.

Хотя расширение работает, я не уверен, смогу ли я отправить веб-расширение Firefox в Google Chrome Store с этим файлом манифеста.

Я могу создать еще один проект для Google Chrome, но я хочу сохранить одну папку, которая может работать как для Firefox, так и для Google Chrome без каких-либо предупреждений.

Как я могу исправить это предупреждение, сохранив при этом требования Firefox?




Ответы (2)


Вероятно, вы захотите создать отдельные файлы манифеста, даже если все остальное не изменилось. В конце концов, в документации говорится:

applications. Поддерживается только в Gecko.

Моя рекомендация - это сценарий сборки, который копирует файлы и правильный манифест для каждой версии (или динамически генерирует правильный манифест, если вам нравится фантазия).

person Xan    schedule 10.05.2016
comment
Хотя я понимаю этот ответ, мне кажется глупым, что они не попадают на одну и ту же страницу. Либо Google должен просто принять и проигнорировать это, либо Firefox должен обойтись без него. - person JeffG; 21.04.2017
comment
@JeffG Насколько мне известно, это была проблема только с ранними версиями поддержки WebExtension. Цитата: "applications" не поддерживается в Google Chrome и является обязательным в Firefox до Firefox 48. - person Xan; 21.04.2017
comment
В дополнение к комментарию @Xan, вот источник, который заявляет, что ключ applications теперь является обязательным: developer.mozilla.org/en-US/Add-ons/WebExtensions/ - person khlr; 30.11.2017
comment
Интересно, есть ли там образец сценариев сборки, которые переводят ваши расширения в правильную форму для Chrome, Firefox, Opera и т. - person tofutim; 01.02.2018

Запустив 68.0b13 (64-бит), я просто удалил ключ и тело "приложения"

//  "applications": {
//      "gecko": {
//          "strict_min_version": "58.0a1"
//      }
//  },

и без него нормально работает.

в документации говорится :

Обратите внимание, что возможность разработки и отладки WebExtensions, не включающих идентификатор, появилась в Firefox 48. Если вам нужно использовать более раннюю версию Firefox, вы должны использовать ключ приложений, чтобы явно установить идентификатор.

Я считаю, что ключ "приложения" НЕ требуется для >= Firefox 48.

person Craig Hicks    schedule 30.06.2019
comment
Есть некоторые API, которые все еще требуют этого: developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/ - person janpio; 01.09.2019
comment
Я не видел способа использовать browser.storage.sync без создания идентификатора во время разработки. (Думаю, это был API, с которым у меня были проблемы.) - person R891; 27.07.2020