Как я могу пропустить подписание кода для разработки в Xcode?

Всякий раз, когда я создаю свой проект Xcode, после компиляции всего моего кода, навсегда заканчивается "подписание продукта". (Я считаю, потому что проект включает в себя около 200 МБ ресурсов, требующих подписания.) Я бы хотел пропустить подписание кода во время разработки, поэтому сборка может завершиться быстрее. Как я могу это сделать?

Ответ 1

Чтобы отключить код, перейдите в свой проект и настройте "Настройки сборки", выполните поиск "Идентификация подписи кода", чтобы изменить их значение на "Не вводить код" в обоих из них.

Чтобы сделать это эффективным, вам нужно изменить это значение в проекте и во всех целевых задачах отдельно.

Ответ 2

Начиная с Xcode 10, вот как отключить подпись кода для приложения MacOS:

  1. Выберите свой проект в навигаторе проекта.
  2. Выберите свое приложение в списке целей.
  3. Нажмите "Настройки сборки".
  4. Нажмите "Все".
  5. Нажмите "Уровни".
  6. Введите "идентификатор" в поле поиска.

first six steps

  1. Нажмите на строку "Идентификация подписи кода" под столбцом для цели вашего приложения (в моем примере с надписью "test"). Эта ячейка таблицы может выглядеть пустой.

where to click for step 7

  1. В появившемся всплывающем меню выберите "Другие…".

pop-up menu

  1. В появившемся текстовом поле удалите весь текст, чтобы поле было пустым.

empty popover

  1. Нажмите клавишу возврата, чтобы закрыть поповер.

С этим параметром 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 говорится, что для запуска приложения на устройстве требуется подписывающий объект. :: Проверьте этот документ яблока