Всякий раз, когда я создаю свой проект Xcode, после компиляции всего моего кода требуется вечность, чтобы завершить "подписание продукта". (Я полагаю, это связано с тем, что проект включает около 200 МБ ресурсов, требующих подписи.) Я хотел бы пропустить подписывание кода во время разработки, чтобы сборка могла завершиться быстрее. Как я могу это сделать?
Как я могу пропустить подписание кода для сборок разработки в Xcode?
Ответы (5)
Чтобы отключить подпись кода, перейдите в свой проект и выберите «Настройки сборки», найдите «Идентификатор подписи кода», измените его значение на «Не подписывать код» в обоих из них.
Чтобы сделать это эффективным, вам нужно изменить это значение в Проекте и во всех Целях по отдельности.
Начиная с Xcode 10, вот как отключить подписывание кода для приложения macOS:
- Выберите свой проект в навигаторе проектов.
- Выберите свое приложение в списке целей.
- Нажмите «Настройки сборки».
- Нажмите «Все».
- Нажмите «Уровни».
- Введите «личность» в поле поиска.
- Нажмите на строку Code Signing Identity под столбцом для вашего целевого приложения (в моем примере оно помечено как «test»). Эта ячейка таблицы может оказаться пустой.
- В появившемся всплывающем меню выберите «Другое…».
- В появившемся всплывающем текстовом поле удалите весь текст, чтобы поле стало пустым.
- Нажмите клавишу возврата, чтобы закрыть всплывающее окно.
С этим параметром Xcode не будет подписывать цель вашего приложения.
An empty identity is not valid when signing a binary for the product type 'Application'
, какие-либо обновления?
- person Top-Master; 10.10.2020
Если кто-то использует 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"
)
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
- person Andrii Zymohliad; 13.12.2019
/usr/bin/codesign --force --sign - --timestamp=none <ProjectName>
в правилах пост-сборки CMake. Есть идеи?
- person Royi; 05.06.2020
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
- person kerrytazi; 07.04.2021
Вы можете попробовать переместить свои ресурсы в отдельную цель пакета, а затем добавить продукт .bundle этой цели в фазу сборки вашего приложения «копировать ресурсы пакета» — в идеале сборка приложения должна иметь возможность использовать подпись пакета (для чего потребуется только для повторного создания при изменении содержимого пакета) вместо того, чтобы повторно подписывать ресурсы по отдельности.
.bundle
, внутри которого будут все мои вещи?
- person tbodt; 13.08.2015
Сборки FWIW для iOS, которые вы встраиваете в свой симулятор, не требуют подписи кода. Следовательно, не нужно пропускать его.
Вам нужно только подписание кода/профиль подготовки на физических устройствах. Я не знаю, как их можно пропустить.
Этот другой ответ, который я не пробовал, предполагает, что вы можете создавать без кода- подписываюсь, если вы делаете джейлбрейк, но я не уверен, что этот ответ действителен сейчас