0

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

要从 Jenkins 持续集成中存档,我正在运行

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

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

“无法安装‘错误读取文件:info.plist’请稍后再试。”

并且应用程序名称本身是“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

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

线程崩溃:0 异常类型:EXC_CRASH (SIGABRT) 异常代码:0x0000000000000000、0x0000000000000000 异常说明:EXC_CORPSE_NOTIFY 终止原因:DYLD,[0x9]

如何从命令行正确构建/运行/存档?

4

2 回答 2

1

我可以建议直接从 Xcode 制作“存档”,然后“导出存档”,只是为了弄清楚这是构建问题还是脚本问题。

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

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

此外,xcode 9 对 exportArchive.plist 有新的要求。如果您直接从 Xcode 中导出存档,它会将用于导出的 plist 与导出结果一起保存。您可以稍后在构建脚本中使用它。

于 2017-10-16T08:40:20.373 回答
1

我使用fastlane在 CI 上构建应用程序。这比手动制作所有东西要容易。我使用跟随车道来建立一个开发档案:

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 脚本添加额外的步骤,例如安装 pod。阅读文档,Fastlane 是一个很棒的 CI 工具。

于 2017-10-16T09:31:26.010 回答