Xcode 9: xcodebuild -exportArchive Ошибка чтения файла: info.plist

У меня есть проект с несколькими конфигурациями сборки и сценариями сборки, который недавно был перенесен из Xcode 8 в Xcode9. Он прекрасно работает и работает как на симуляторе, так и на устройстве из XCode, а также правильно архивирует. Тем не менее, когда я пытаюсь собрать или архивировать из командной строки, это происходит успешно, но приложение вылетает при открытии (на симуляторе) или выдает сообщение об ошибке (при открытии на устройстве).

В архив от Jenkins Continuous Integration, я бегу

'xcodebuild -exportArchive -archivePath myApp.xcarchive -exportOptionsPlist ./build/exportArchive.plist -exportPath myApp.ipa'

и он создает IPA, но когда я пытаюсь открыть IPA, он дает мне эту ошибку:

"Невозможно установить 'Ошибка чтения файла: info.plist' Пожалуйста, повторите попытку позже."

а само приложение называется "ErrorReadingFile:info.plist"

Когда я открываю экспортированный файл.ipa, в нем нет dSYMs или info.plist, только папка Products с.app внутри, а файл.app совершенно пустой, за исключением некоторых изображений значков iPad (это должно быть универсальное приложение).


Также, когда я запускаю команды для сборки и развертывания для симулятора:

xcodebuild -sdk iphonesimulator -configuration Debug -project myApp
xcrun simctl install <whatever device id> myApp.app
xcrun simctl launch <whatever device id> com.whatever.myApp

Он успешно устанавливает приложение и сразу после запуска вылетает без кодов ошибок. Вот что появляется в отчете после сбоя симулятора:

Сбой потока: 0 Тип исключения: EXC_CRASH (SIGABRT) Коды исключений: 0x0000000000000000, 0x0000000000000000 Примечание об исключении: EXC_CORPSE_NOTIFY Причина завершения: DYLD, [0x9]

Как мне получить это, чтобы построить / запустить / архивировать правильно из командной строки??

2 ответа

Решение

Я могу предложить создать "архив", а затем "экспортировать архив" непосредственно из XCode, просто чтобы выяснить, это проблема со сборкой или со скриптами.

Вы сказали, что у вас есть несколько конфигураций. Может быть, вы строите неправильную схему?

Можете ли вы предоставить свои команды сборки?

Кроме того, xcode 9 имеет новые требования к exportArchive.plist. И если вы сделаете экспорт архива непосредственно из XCode, он сохранит plist, который использовался для экспорта, с результатом экспорта. И вы можете использовать его позже в ваших скриптах сборки.

Я использую fastlane для сборки приложений на CI. Это проще, чем делать все вручную. Я использую Follow Lane для создания развивающего архива:

lane :development_archive do
    gym(
        output_directory: ENV['ARTIFACT_OUTPUT_DIRECTORY'],
        output_name: ENV['IPA_ARCHIVE_NAME'],
        scheme: ENV['SCHEME'],
        include_bitcode: false,
        configuration: 'Debug',
        export_method: "development",
    )
end

И в командной строке я просто набираю fastlane development_archive получить архив IPA. Возможно, вам следует добавить дополнительные шаги в скрипт Fastlane, такие как установка модулей. Прочитайте документацию, Fastlane является отличным инструментом для CI.

Другие вопросы по тегам