#ios #xcode #react-native
#iOS #xcode #реагирующий-родной
Вопрос:
У меня странная проблема с проектом react native. Сборка проекта в XCode работает нормально, но сборка в командной строке выдает странную ошибку. В частности, этот вызов (где значения в <..> заменяются реальными значениями)
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace <workspace name>.xcworkspace -configuration <configuration> -scheme <schema> -sdk iphonesimulator13.6
Выдает эту странную ошибку при связывании приложения:
ld: unknown option: -target
Похоже, это связано с тем, что этап связывания вызывается следующим образом:
Ld /Users/<username>/Library/Developer/Xcode/DerivedData/<project derviced data directory> normal x86_64 (in target '<target>' from project '<project>')
cd /<project direvtory>
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -target x86_64-apple-ios11.0-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.6.sdk -L <list of libraries included>
Что кажется странным в этом шаге, так это то, что он использует ld
, тогда как в журнале сборки в XCode этот шаг
Ld /Users/alex/Library/Developer/Xcode/DerivedData/<project derived data directory> normal x86_64 (in target '<Target>' from project '<project>')
cd /<project directory>
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios11.0-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.6.sdk -L <libraries>
Разница в том, что XCode, похоже, связывается с использованием clang, тогда как xcodebuild связывается с использованием ld. У кого-нибудь есть идеи, почему это может происходить?
Комментарии:
1. Вы работаете в нестандартной среде сборки? У меня тоже есть эта проблема, но она возникает только тогда, когда я пытаюсь выполнить сборку с помощью диспетчера пакетов nix. Если я запускаю ту же
xcodebuild
команду напрямую, она работает. У меня нет дальнейшего понимания… но любопытно, связано ли это также с нестандартной средой сборки, что может привести к подсказкам! : D2. Да, я также использую nix, но даже запуск
xcodebuild
за пределами anix-shell
вызывает проблемы.3. Интересно. Два, с которыми у меня возникли проблемы, работают без проблем за пределами nix… Один строит с
xcodebuild
, другой сswift
. В пакете swift я заметил, чтоarch
, например--arch x86_64 --arch arm64
, если указано значение if, это вызывает проблему, но если arch не указан, он нормально строится внутри nix. Также существует проблема с песочницей, но я просто отключил песочницу, чтобы пока игнорировать это.