Обновление Xcode дает ошибку "не может найти объект кода на диске" при кодовом кодировании

Я просто обновился до самой новой версии Xcode и обнаружил ошибку при запуске наших автоматизированных скриптов сборки (они используют команды xcodebuild и xcrun).

Ошибка возникает сразу после оператора журнала ### Codesigning '/Users/... и выглядит следующим образом:

Program /usr/bin/codesign returned 1 : [/var/folders/__/63j90nkn2lg18ct1nq791_nc0000gn/T/g5hbigh1tM/Payload/CurrentTarget.app: replacing existing signature
/var/folders/__/63j90nkn2lg18ct1nq791_nc0000gn/T/g5hbigh1tM/Payload/CurrentTarget.app: cannot find code object on disk

Я нашел docs здесь, в котором перечислены и кратко описаны ошибки, но нет конкретных сведений о том, как его разрешить.

Потому что я слишком долго искал разрешение на это (ничего на S.O.), я опубликую ответ ниже, если другие столкнутся с одной и той же проблемой.

Ответ 1

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

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate"

Но реальное решение для меня произошло от здесь:

ln -s /usr/bin/codesign_allocate /Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate

Надеюсь, что это кому-то поможет...

Ответ 2

У меня была эта ошибка при запуске сборки script на XCode 4.5 (установлена ​​в/Applciations/XCode4_5), при этом XCode 5 был установлен совсем недавно (в главном каталоге dev в /Applications/XCode ), чтобы я мог настроить iOS 6 SDK в более старом проекте, когда это необходимо.

Ранее я применил обходное решение, упомянутое в fooobar.com/questions/542447/..., в мою сборку script, экспортировав переменную среды CODESIGN_ALLOCATE.

В этом недавнем примере этой проблемы я фактически исправил ее, удалив старый обходной путь. Поэтому мой совет: если вы недавно получили эту ошибку, и ранее вы применяли обходной путь: попробуйте не использовать ее и посмотреть, помогает ли это!

Ответ 3

Ошибка cannot find code object on disk произошла в двух моих проектах после обновления до Xcode 9.3.

Случай 1: Проблема была обнаружена как CODE_SIGN_IDENTITY -.

Идентификация подписи кода

Исправить было изменение - на что-то конкретное.

В Инспекторе проектов Xcode "Идентификация подписи кода" становится либо Don't Code Sign, либо идентификатором идентификатора кода.

Таким образом, CODE_SIGN_IDENTITY "-" становится либо "" (не кодовым знаком), либо определенным идентификатором кода.

Случай 2: При использовании инструментальной привязки Snifthot Swift 4.1 решение заключалось в том, чтобы добавить файл настроек .xcconfig Configurations Settings в проект Xcode. Значение по умолчанию CODESIGN_ALLOCATE было установлено в путь swift-4.1-DEVELOPMENT-SNAPSHOT-....xctoolchain/usr/bin, который не содержит исполняемого файла CODESIGN_ALLOCATE. .xcconfig может явно установить CODESIGN_ALLOCATE для сборки.

example.xcconfig

// file: example.config
CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate