我有一个包含多个构建配置和构建脚本的项目,最近从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文件时,它没有dSYMs或info.plist,只有一个带有.app的Products文件夹,除了一些iPad图标图像外,.app文件全部为空(这应该是一个通用的应用程序)。
另外, 当我运行命令来构建和部署模拟器时:
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]
如何从命令行正确构建/运行/存档?
答案 0 :(得分:1)
我可以建议直接从Xcode制作'archive',然后'export archive',只是为了弄清楚它是构建问题还是脚本问题。
你说你有多种配置。也许你正在构建错误的计划?
您能提供构建命令吗?
此外,xcode 9对exportArchive.plist有新的要求。如果您将直接从Xcode导出存档,它将使用导出结果保存用于导出的plist。您可以稍后在构建脚本中使用它。
答案 1 :(得分:1)
我在CI上使用fastlane构建应用。比手工制作所有东西更容易。 我使用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的一个重要工具。