2010-05-17 1 views
1

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

Использование 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 был кратковременно dyld-load (и сразу dyld-разгружать) плагин при запуске, но без фактического поиска любых символов внутри плагина или вызова каких-либо функций. Тем не менее, похоже, это для каждого плагина.

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

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

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

+1

- единичный процесс - неплохая идея для отладки плагина на Mac; Плагины NPAPI действительно не работают в Mac Chrome в режиме одного процесса. Диалоговое окно -plugin-startup-dialog не отображает диалоговое окно, но регистрирует PID на консоли и приостанавливает плагин. – smorgan

ответ

1

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

Есть два способа, чтобы получить ваш плагин работает в Chromium для Mac:

  1. Лучший способ заключается в использовании новой информации.стиль декларирования типов MIME, описанный в разделе «Регистрация вашего подключаемого модуля» от Apple's plugin docs. Это поддерживается Firefox 3.5+, Safari и Chrome по крайней мере; вы можете оставить ресурс резервным для старых браузеров.

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

    «применение/х-VND-aplix- Foo»,„“

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

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

+0

Приносим извинения за задержку. Я просто попробовал свое первое предложение и фактически решил проблему. Большое спасибо! – Roman

0

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

Некоторые вещи, чтобы проверить:

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

Спасибо за ответ. Плагин отображается на странице «about: plugins». Я также проверил консоль, она содержит тонны сообщений из sandboxd, в основном «deny mach-lookup» и «deny file-read-data», но ничего похожего на плагин. Кроме того, если я запускаю Google Chrome с помощью «--no-sandbox», я не получаю никаких сообщений журнала от Chrome, также нет ошибок. Я также повторно проверил Info.plist, он работает с Safari и Firefox, поэтому я не уверен, что еще ожидает Chrome в Info.plist. – Roman

0

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

+0

Спасибо за ответ. В настоящее время я все еще использую тип MIME исходного кода примера, который является «application/x-vnd-aplix-foo». Я дам ему еще одну попытку в ближайшее время, и если она все еще не работает, я напишу ошибку, как вы предложили. Благодарю. – Roman

 Смежные вопросы

  • Нет связанных вопросов^_^