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.
的绝佳工具
我有一个包含多个构建配置和构建脚本的项目,该项目最近从 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.