Создание приложений iOS с использованием xcodebuild без кодового обозначения

Мы создаем приложение для другой компании. Они держат ключ подписи и не хотят делиться им с нами.

Должно быть возможно разделить сборку и подпись, но как ее указать в командной строке xcodebuild?

РЕДАКТИРОВАТЬ для тех, кто приезжает сюда из поиска. Принятый ответ правильный - он делает то, что задает вопрос. Тем не менее, общая картина разделяет build и codesign (позволяет разработчику, у которого нет ключа распространения для создания приложения). Более новые версии Xcode предоставляют инструменты для этого. Это не является строго ответом на этот вопрос, поэтому я опубликовал его как сущность: https://gist.github.com/noamtm/5c3aaa0b615477162ccd.

Ответ 1

Чтобы пропустить подписание кода, вы можете выполнить ручную сборку с консоли следующим образом:

xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

Используйте дополнительные параметры -configuration, -target и -sdk, чтобы определить свои настройки сборки.

Обратитесь к этому fooobar.com/questions/20391/..., чтобы получить подробное описание того, как отключить подписание кода внутри Xcode.

Ответ 2

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

CodeSign error: code signing is required for product type 'Application' in SDK
                'iOS 5.1'

В этом случае вы должны настроить целевую аудиторию для использования подписи подкаталога разработчика/команды (*) в режиме деблокирования. Приложение будет подписано с этим, когда вы его создадите, и вы можете отправить его своему клиенту, чтобы они могли уйти в отставку. Это то, что делают большинство наших сторонних разработчиков.

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

Ответ 3

Чтобы полностью предотвратить подписание кода с помощью Xcode 7, я использовал все следующие опции:

CODE_SIGN_IDENTITY=""
CODE_SIGNING_REQUIRED="NO"
CODE_SIGN_ENTITLEMENTS=""
CODE_SIGNING_ALLOWED="NO"

Последний вариант CODE_SIGNING_ALLOWED="NO", похоже, сделал трюк.

Ответ 4

В Навигаторе проектов выберите свой проект и откройте раздел "Настройки сборки" вашего проекта (а не какая-либо конкретная цель).

В разделе "Подпись кода" найдите "Идентификация подписи кода", а для режимов "Отладка" и "Сброс" установите "Любой SDK для iOS" на "Не вводить код".