为啥我需要在使用健身房构建项目时添加 use_legacy_build_api: true ?
Posted
技术标签:
【中文标题】为啥我需要在使用健身房构建项目时添加 use_legacy_build_api: true ?【英文标题】:Why I need add use_legacy_build_api: true when use gym build project?为什么我需要在使用健身房构建项目时添加 use_legacy_build_api: true ? 【发布时间】:2016-04-22 10:47:52 【问题描述】:为什么在使用gym构建项目时需要添加use_legacy_build_api: true?
我使用 Xcode 7.3 和 gym 1.6.2,
我建立了一个新项目(OC 或 swift 相同),
以下是错误输出:
2016-04-22 18:45:46.071 xcodebuild[135:10371572] [MT] PluginLoading: Required plug-in compatibility UUID F41BD31E-2683-44B8-AE7F-5F09E919790E for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/BBUFullIssueNavigator.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2016-04-22 18:45:46.246 xcodebuild[135:10371572] ### Failed to load Addressbook class CNContactNameFormatter
2016-04-22 18:45:46.300 xcodebuild[135:10371572] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/4w/fpkx9n7s3gnbcxfym8mqr18m0000gn/T/GymDemo_2016-04-22_18-45-46.299.xcdistributionlogs'.
2016-04-22 18:45:46.585 xcodebuild[135:10371572] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7ff847a3e450>: Error Domain=IDEDistributionErrorDomain Code=1 "(null)"
error: exportArchive: The operation couldn’t be completed. (IDEDistributionErrorDomain error 1.)
Error Domain=IDEDistributionErrorDomain Code=1 "(null)"
** EXPORT FAILED **
[18:45:46]: Exit status: 70
[!] Error packaging up the application
【问题讨论】:
【参考方案1】:我不知道为什么会报错,但是我只是使用fastlane init 并更改了fastlane,一切正常。这是我的快速文件:
desc "Deploy a new version to the App Store"
lane :appstore do
# match(type: "appstore")
# snapshot
#sigh
gym(
scheme: "myscheme_ios",
export_method:"app-store",
output_directory:"./fastlane",
output_name:"myipa_20160607030055",
codesigning_identity:"iPhone Distribution: Jack Zhou (9R46C82WH7)"
) # Build your app - more options available
#deliver(force: true)
# frameit
end
【讨论】:
【参考方案2】:标志 use_legacy_build_api
应该仅在您使用 Xcode 6 或更早版本运行时使用。
正如Felix Krause 本身在Github 上所解释的那样:
什么是 use_legacy_build_api? 它使用的是 Xcode 6 构建 API,官方不再支持该 API。
发生的事情是在 Xcode 6 和 7 之间对构建/打包过程进行了一些更改,因此为了适应新的过程并且仍然能够与旧的一起工作,fastlane 引入了这个新标志,基本上通知使用哪个命令。
Xcode 7
由于您使用的是 Xcode 7,因此您需要指定导出应用程序的方式,这与您在使用 Xcode 本身时需要做出的选择相同:
您还可以在 Apple 文档 Exporting Your App 上阅读有关导出方法的更多信息
健身房
因此,正如上面使用 Fastlane 所解释的,您应该相应地指定 export_method
字段:
gym(export_method:"app-store|ad-hoc|package|enterprise|development|developer-id")
您可以在fastlane actions documentation 上阅读有关 Gym 及其参数的更多信息
use_legacy_build_api:[已弃用!] 不要再使用此选项,因为它已被 Apple 弃用 - 不要再使用此选项,因为它已被 Apple 弃用 export_method:用于导出存档的方法。有效值为:app-store、ad-hoc、package、enterprise、development、developer-id【讨论】:
以上是关于为啥我需要在使用健身房构建项目时添加 use_legacy_build_api: true ?的主要内容,如果未能解决你的问题,请参考以下文章