Обновление 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