Есть ли способ добавить возможности сетевых расширений в приложение macOS, не присоединяясь к программе разработчика Apple?

#macos #apple-developer #networkextension #macos-system-extension

#macos #apple-разработчик #networkextension #macos-system-extension

Вопрос:

Я хочу создать приложение macOS, которое фильтрует определенные сетевые запросы, поэтому мне нужно добавить возможность NetworkExtensions. Но после добавления возможности NetworkExtensions я получаю следующее сообщение:

 Your development team, "Potato Dev2", does not support the Network Extensions capability.
  

Изображение того, откуда взято вышеупомянутое сообщение: https://i.stack.imgur.com/H46gE.png

Из документации Apple «Добавление возможностей в ваше приложение»:

Платформа и являетесь ли вы участником программы Apple для разработчиков, могут ограничивать возможности, доступные вашему приложению

В документации явно не указано, какие возможности требуют участия в программе Apple для разработчиков. Я также не понимаю, зачем мне нужно быть частью программы Apple Developer Program для написания программного обеспечения на моем собственном компьютере и для него. Обратите внимание, что, по крайней мере, насколько мне известно, возможности NetworkExtensions не зависят от какой-либо службы Apple (в отличие от HealthKit или Game Center).

Итак, есть ли способ добавить возможности сетевых расширений в приложение macOS, не присоединяясь к программе разработчика Apple?

Ответ №1:

Вы должны иметь возможность сделать это, если отключите защиту целостности системы (SIP) на вашем Mac ( csrutil disable в терминале в среде восстановления macOS) и отключите проверку прав amfid , добавив amfi_get_out_of_my_way=1 в аргументы командной строки ядра. (Снова в среде восстановления, nvram boot-args='amfi_get_out_of_my_way=1' )

Вам нужно будет обойти Xcode при подписании кода и использовать codesign команду напрямую, потому что Xcode выполняет проверку прав доступа к профилю подготовки, как вы заметили. codesign сама по себе эта проверка не выполняется.

Это работает, по сути, позволяя практически все, что связано с системными расширениями DriverKit, поэтому я ожидаю, что это будет работать и с сетевыми системными расширениями.

Комментарии:

1. Привет @pmdj, не могли бы вы, пожалуйста, подробнее рассказать о том, как использовать Network Extension в iOS, не присоединяясь к программе Apple для разработчиков? Я просто хочу написать приложение только для себя. В Xcode я ставлю галочку App Proxy на панели сетевых расширений на Signing amp; Capabilities странице, но появляется сообщение об ошибке Personal development teams, including "neevek", do not support the Network Extensions capability. . Как использовать codesign из командной строки? и что это такое amfid ?

2. @neevek Первоначальный вопрос касался macOS; на iOS ситуация иная. На iOS невозможно отключить защиту целостности системы (SIP), поэтому, насколько мне известно, обходного пути нет.

Ответ №2:

Я выяснил ответ на свой вопрос: чтобы написать программное обеспечение macOS, использующее NetworkExtension API, вы должны быть участником программы Apple для разработчиков (100 долларов в год). Смотрите https://developer.apple.com/support/app-capabilities / подробнее.