如何从命令行编译 iOS 项目

Posted

技术标签:

【中文标题】如何从命令行编译 iOS 项目【英文标题】:How to compile an iOS project from command line 【发布时间】:2018-05-17 14:38:41 【问题描述】:

我想组装/编译一个上面有 cocoapods 但没有的工作区:

存档。 需要设置凭据或 pem 文件。

类似: xcodebuild assemble

我想知道代码是否编译但不生成存档或已部署的工件。

我尝试了fastlane/gym,但它试图创建一个存档。

【问题讨论】:

xcodebuild -scheme build @Marcel 运行时出现错误,但从 xcode 编译并在模拟器上运行 Exiting early, found no Swift version in executables. 看起来您没有在构建设置中设置语言版本,请尝试在 xcode 中打开项目并检查目标的构建设置。你有机会使用 cocoapods 吗? 对不起,在问题中错过了,您正在使用 cocoapods。尝试您可以在以下页面上找到的解决方法:github.com/CocoaPods/CocoaPods/issues/5521 @Marcel 信息不在问题中,我对其进行了编辑。感谢您的帮助 【参考方案1】:

使用 xcodebuild

您可以使用以下命令编译项目:

xcodebuild <path to project> -scheme <scheme name> build

因为您使用的是 cocoapods,所以您应该使用工作区而不是项目进行编译,如下所示:

xcodebuild -workspace <path to workspace file> -scheme <scheme name> build

如果 swift 版本未在 cocoapods 目标中设置,则可以通过将以下内容添加到您的 Podfile 来解决此问题:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '4.1'
   end
  end
end

使用快车道

另一种方法是使用来自fastlane 的build_app,例如:

build_app(scheme: 'YourScheme',
          workspace: 'YourProject.xcworkspace',
          skip_archive: true,
          skip_package_ipa: true,
          include_bitcode: false)

我更喜欢这种方式,因为它更简单,并且使用xcpretty 打印输出比xcodebuild 更好。

【讨论】:

以上是关于如何从命令行编译 iOS 项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 MXMLC 从命令行编译动作脚本

用maven命令行编译项目时,如何指定JDK的版

来自命令行的 xcodebuild:文件的编译标志

从命令行编译 C# 7.2 项目

如何使用 grails 命令行编译 grails 项目?

如何从 Unix 命令行安装 c 和 c++ 编译器,然后与 Eclipse 一起使用?