Создание приложений 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" на "Не вводить код".