Указание SDKROOT для разных архитектур на iOS - PullRequest
0 голосов
/ 01 мая 2019

Я прочитал эту запись и мне удалось добиться полной сборки без использования скрипта. Мой следующий шаг - попытаться сделать это с помощью терминала для создания толстого двоичного файла.

В сообщении автор заявляет о добавлении следующего к файлу проекта:

SDKROOT = iphoneos
SDKROOT[arch=i386] = $(CORRESPONDING_SIMULATOR_SDK_NAME)
SDKROOT[arch=x86_64] = $(CORRESPONDING_SIMULATOR_SDK_NAME)

Учитывая, что я могу сделать толстый двоичный файл из настроек сборки в файле проекта, предполагается, что я могу сделать это из терминала. Моя проблема заключается в том, как указать SDKROOT[arch=i386] и SDKROOT[arch=x86_64] в терминале. Я пробовал разные комбинации без удачи. Вот одна из многих попыток сделать это:

xcodebuild clean analyze ARCHS='arm64 armv7 i386 x86_64' SDKROOT='iphoneos' SDKROOT[arch=i386] = 'iphonesimulator12.1' SDKROOT[arch=x86_64] = 'iphonesimulator12.1'


xcodebuild clean analyze ARCHS='arm64 armv7 i386 x86_64' SDKROOT='iphoneos iphonesimulator12.1'

1 Ответ

0 голосов
/ 01 мая 2019

Вы не указываете это таким образом.Каждый SDKROOT должен отображаться в свойство SDKROOT в Info.pist SDK (в этом примере /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Info.plist).В iPhoneSimulator SDK это свойство имеет значение: iphonesimulator.Таким образом, у вас правильно установлена ​​переменная ARCHS (хотя я подозреваю, что ARCHS armv7 и arm64 - это SDK в двоичном файле платформы Intel, вам может потребоваться удалить их, моя память немного запуталась в этом вопросе).

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

xcodebuild clean analysis ARCHS = 'arm64 armv7 i386 x86_64' SDKROOT = 'iphonesimulator'

...