Не удалось загрузить плагин NPAPI в Google Chrome на Mac OS X - PullRequest
1 голос
/ 17 мая 2010

Я пытался заставить Google Chrome (6.0.401.1 dev) на Mac OS X загрузить плагин NPAPI безуспешно. Я работал над примером npsimple отсюда: http://git.webvm.net/?p=npsimple.

Использование gcc на Mac и VC ++ 2008 в Windows Мне удалось запустить его в Safari и Firefox в Mac OS X, а также в Firefox и Google Chrome в Windows, но не в Google Chrome в Mac OS X.

При попытке отладки Google Chrome в Mac OS X казалось, что Google Chrome кратковременно загружает (и немедленно выгружает) плагин при запуске, но на самом деле не ищет какие-либо символы внутри плагина или не вызывает какой-либо из них. функции. Похоже, он делал это для каждого плагина.

Кроме того, при загрузке страницы с тегом встраивания для плагина Google Chrome, похоже, даже не загружал плагин, и никакие функции не вызывались (даже NP_GetEntryPoints). Google Chrome также не выводит никаких сообщений об ошибках, просто не загружает плагин. Я не уверен, что все поймал с помощью gdb из-за того, что Google Chrome использовал разные процессы, но я также попробовал все переключатели, такие как --no-sandbox, --single-process и --plugin-startup-dialog (что, кстати, вообще не работает в Mac OS ИКС). Я также удостоверился, что архитектура двоичных совпадений (то есть 32-разрядная для Google Chrome).

У кого-нибудь были подобные проблемы раньше? Есть ли что-то, чего мне здесь не хватает, например, gcc-переключатель при компиляции или что-то в этом роде?

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 27 мая 2010

Я исследовал это дальше. Проблема в том, что файл Localized.r в npsimple перечисляет только тип MIME в записи идентификатора 128, и он должен быть парой MIME тип / расширение файла. WebKit и Gecko явно допускают, что последняя запись не имеет расширения файла, а Chromium - нет.

Существует два способа заставить ваш плагин работать в Chromium для Mac:

  1. Лучшим способом является использование нового стиля Info.plist для объявления типов MIME, описанного в разделе «Регистрация подключаемого модуля» Документация по плагину Apple . Это поддерживается Firefox 3.5+, Safari и Chrome как минимум; Вы можете оставить ресурс в качестве запасного варианта для старых браузеров.

  2. Если вы хотите использовать только ресурс, вы можете добавить пустое расширение файла в объявление MIME, изменив строку ввода MIME в Localized.r на:

    "application / x-vnd-aplix-foo", ""

Имейте в виду, что в некоторых браузерах (включая Chromium) в обозримом будущем, скорее всего, будет прекращена поддержка старого метода, основанного на ресурсах, поэтому я настоятельно рекомендую перейти к варианту 1.

(Возможно, это ошибка в Chromium, которая не справляется с этим изящно, как это делают другие браузеры, но поскольку этот метод устарел, и это не проблема для любого фактически развернутого плагина, о котором я знаю, это вряд ли будет изменен.)

0 голосов
/ 18 мая 2010

С парой очень специфических исключений (какие типы MIME вы пытаетесь обработать?) Должен быть загружен любой допустимый плагин NPAPI. Лучше всего было бы подать ошибку с максимально возможной детализацией, чтобы я мог исследовать ее (я работаю над поддержкой плагинов для Google Chrome на Mac).

0 голосов
/ 17 мая 2010

Я только что проверил свой плагин, и он также работает с упомянутой вами сборкой dev. В принципе, эта сборка Google Chrome поддерживает сторонние плагины NPAPI. (В прошлом у нас были сборки, которые поддерживали только плагины Flash и Quicktime.)

Что нужно проверить:

  • Включен ли ваш плагин в список установленных плагинов, который вы получаете, когда вы вводите "about: plugins" в поле адреса браузера?
  • Вы проверили вывод консоли (запустите console.app)?
    Иногда вы можете найти там ценную информацию, например, при загрузке dylib происходит сбой ...
  • Возможно, что-то отсутствует в Info.plist пакета плагинов, которого ожидает Google Chrome.
...