Xcode 9:xcodebuild -exportArchive 错误读取文件:info.plist
Posted
技术标签:
【中文标题】Xcode 9:xcodebuild -exportArchive 错误读取文件:info.plist【英文标题】:Xcode 9: xcodebuild -exportArchive Error Reading File: info.plist 【发布时间】:2017-10-06 19:01:42 【问题描述】:我有一个具有多个构建配置和构建脚本的项目,该项目最近从 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 文件夹,除了一些 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]
如何从命令行正确构建/运行/存档??
【问题讨论】:
【参考方案1】:我可以建议制作“存档”,然后直接从 Xcode 中“导出存档”,只是为了弄清楚是构建问题还是脚本问题。
您说您有多种配置。也许您正在构建错误的方案?
你能提供你的构建命令吗?
此外,xcode 9 对 exportArchive.plist 有新的要求。如果您直接从 Xcode 中导出存档,它会将用于导出的 plist 与导出结果一起保存。您可以稍后在构建脚本中使用它。
【讨论】:
【参考方案2】:我使用 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 脚本添加额外的步骤,例如安装 pod。阅读文档,Fastlane 是 CI 的绝佳工具。
【讨论】:
以上是关于Xcode 9:xcodebuild -exportArchive 错误读取文件:info.plist的主要内容,如果未能解决你的问题,请参考以下文章
无效的 Swift 支持 - 适用于 iOS 9 的 Swift 2.0 项目,(Xcode build 7A220)
为啥在使用 XCode 和 xcodebuild 之间存在差异?