Xcode 9: xcodebuild -exportArchive 读取文件时出错:info.plist

Xcode 9: xcodebuild -exportArchive Error Reading File: info.plist

我有一个包含多个构建配置和构建脚本的项目,该项目最近从 Xcode 8 迁移到 Xcode9。它可以从 Xcode 构建并 运行 对模拟器和设备都很好,并且可以正确存档。但是,当我尝试从命令行构建或存档时,它成功了,但应用程序在打开时崩溃(在模拟器上)或给出错误消息(在设备上打开时)。

要从 Jenkins 持续集成存档,我 运行ning

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

它创建了一个 ipa,但是当我尝试打开 ipa 时,它给我这个错误:

"Unable To Install 'Error Reading File: info.plist' Please try again later."

and the app name itself is "ErrorReadingFile:info.plist"

当我打开导出的 .ipa 文件时,它没有 dSYM 或 info.plist,只有一个包含 .app 的 Products 文件夹,并且 .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

它成功安装了应用程序,然后在启动后立即崩溃,没有错误代码。 这是模拟器崩溃后报告中显示的内容:

Crashed Thread: 0 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: DYLD, [0x9]

如何从命令行将其正确地build/run/archive?

我可以建议制作 'archive',然后直接从 Xcode 制作 'export archive',只是为了弄清楚是构建问题还是脚本问题。

你说你有多个配置。也许您正在构建错误的方案?

你能提供你的构建命令吗?

此外,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 脚本添加额外的步骤,例如安装 pods。阅读文档,Fastlane 是 CI.

的绝佳工具