Как я могу пропустить подписание кода для разработки в Xcode?
Всякий раз, когда я создаю свой проект Xcode, после компиляции всего моего кода, навсегда заканчивается "подписание продукта". (Я считаю, потому что проект включает в себя около 200 МБ ресурсов, требующих подписания.) Я бы хотел пропустить подписание кода во время разработки, поэтому сборка может завершиться быстрее. Как я могу это сделать?
Ответы
Ответ 1
Чтобы отключить код, перейдите в свой проект и настройте "Настройки сборки", выполните поиск "Идентификация подписи кода", чтобы изменить их значение на "Не вводить код" в обоих из них.
Чтобы сделать это эффективным, вам нужно изменить это значение в проекте и во всех целевых задачах отдельно.
Ответ 2
Начиная с Xcode 10, вот как отключить подпись кода для приложения MacOS:
- Выберите свой проект в навигаторе проекта.
- Выберите свое приложение в списке целей.
- Нажмите "Настройки сборки".
- Нажмите "Все".
- Нажмите "Уровни".
- Введите "идентификатор" в поле поиска.
- Нажмите на строку "Идентификация подписи кода" под столбцом для цели вашего приложения (в моем примере с надписью "test"). Эта ячейка таблицы может выглядеть пустой.
- В появившемся всплывающем меню выберите "Другие…".
- В появившемся текстовом поле удалите весь текст, чтобы поле было пустым.
- Нажмите клавишу возврата, чтобы закрыть поповер.
С этим параметром Xcode не будет подписывать цель вашего приложения.
Ответ 3
Вы можете попытаться переместить свои ресурсы на отдельную цель пакета, а затем добавить продукт.bundle этой цели в свою фазу сборки "копировать ресурсы пакета" - в идеале, сборка приложения должна иметь возможность использовать подпись пакетов (которая будет нужна только для регенерации при изменении содержимого пучков) вместо необходимости повторно подписывать ресурсы по отдельности.
Ответ 4
Если кто-то использует CMake
(для многоплатформенных проектов), чтобы отключить подпись кода для конкретной цели, я использовал это:
set_target_properties(MyAppTarget PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
OUTPUT_NAME "My nice application name"
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_BUNDLE_NAME "My nice application name"
MACOSX_BUNDLE_INFO_PLIST path/to/Info.plist
MACOSX_BUNDLE_BUNDLE_VERSION ${MY_APP_VERSION}
MACOSX_BUNDLE_LONG_VERSION_STRING "My nice application name v${MY_APP_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${MY_APP_VERSION}"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.my.app"
MACOSX_BUNDLE_COPYRIGHT "(C) 2019 My Company"
MACOSX_RPATH TRUE
MACOSX_FRAMEWORK_IDENTIFIER com.myapp.bundle.id
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/Libraries"
RESOURCE "${RESOURCE_FILES}"
XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE
XCODE_ATTRIBUTE_EXECUTABLE_NAME "exec_name"
)
Ответ 5
Вы не можете пропустить процесс подписи кода. Даже для вашей разработки вы должны подписать ее с соответствующим сертификатом разработки, чтобы запустить ее на устройстве.
Даже в документации разработчика Apple говорится, что для запуска приложения на устройстве требуется подписывающий объект. :: Проверьте этот документ яблока