#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 / подробнее.