Xcodegen介绍 | 一款可以帮助你更好的构建Xcode Project的工具

SwiftUI 编码能力提升之 XcodeGen 是什么, 为什么要使用这个工具(教程含源码) Xcodegen 是一个命令行工具,iOS 开发人员可以使用它来根据您的项目文件夹结构和提供给 project.yml 文件的参数自动生成 Xcode 项目文件,该文件包括从目标、方案到代码签名的所有内容以及项目的所有内容文件已经包含。在一个客户项目中,我们有一个由 6 名 iOS 开发人员组成的团队同时编写代码。有一点,我们都在整个项目中处理不同的功能,但项目文件几乎总是被修改,而另一个团队也在处理它。 阅读详情

翻译: AK
声明:转发本文,请联系作者授权
原文地址

在“Better iOS projects”系列中 我们将了解各种工具的环境, 这些工作对于我们管理iOS项目是非常有用的.

xcodeprojects存在问题?

Xcode 是使用.xcodeproj 文件来管理资源和代码,同时也是编译,编辑工具.在大多数情况下是正常工作的,但它有以下几个缺点

  • 虽然你可以手动解决文件冲突, 但不能保存文件合并的正确性.
  • 同步磁盘上的目录和工程目录结束都是手动完成,有时候可以导到混乱, 已经有一个工具来处理这个问题 比如synx或xcodeproj gem 来处理排序问题
  • 在编译之前,有文件丢失时Xcode不会有禁告
  • 处理多个依赖关系和多个 target 时会很不方便

Xcodegen 介绍

Xcodegen是一个工具,它允许我们从名为project.yml的文件中的定义生成xcodeproj文件.由于xcodeproj文件可以随时生成,我们甚至不必将它保存,我们在git中并且可以忽略它(虽然我个人更喜欢保持它接受代码库管理,所以我可以看到我对project.yml的编辑有什么变化文件)。

Xcodegen 有以下两有个重要功能:
- 您可以通过这种方式为各种平台(iOS,tvOS,macOS,watchOS)定义各种Xcode目标(应用程序,框架等)。
- 他允许把代码,资源文件 关联到不同的目标文件中, 从而更容易管理文件所属的taget

虽然xcodegen现在是一个新工具但它已经可以做很多事情了, 如果有你有问题可以去git 来提交问题作者会在数小时内给你回复 ,非常感谢.

如何安装

你可以使用 xcodegen进行安装

brew tap yonaskolb/XcodeGen https://github.com/yonaskolb/XcodeGen.git
brew install xcodegen

或者你可以使用mint 进行安装 ps:你可以使用mint是一个包管理器

mint install yonaskolb/xcodegen
生成一个App Project

首先, 创建一个空的swift 工程 就可能得到所有的.swift 和.xcassets 文件.
我们现在,在工程的根目录创建一个 project.yml 文件内容如下

name: XcodegenApp # The name of the App
options: # Some general settings for the project
  createIntermediateGroups: true # If the folders are nested, also nest the groups in Xcode
  indentWidth: 2 # indent by 2 spaces
  tabWidth: 2 # a tab is 2 spaces
  bundleIdPrefix: "de.number42"
targets: # The List of our targets
  XcodegenApp:
    type: application
    platform: iOS
    deploymentTarget: "10.3"
    sources:
      #Sources
      - path: XcodegenApp

这里写图片描述

然后,你可以保存一份 重命名.xcodeproj文件 ( 这样你可以进行对比文件的修改) , 我就简单使用”Backup” 这个名
打开终端 进入到你的工程目录,执行”run xcodegen” 或 “mint run xcodegen:”
In the terminal, in your project root, run xcodegen or mint run xcodegen:

这里写图片描述

打开这个工程并运行, 你可以看到和原来的工程一样可正常运行

“和原来结果一样”? 但是 testing taget 没有, 我能听到你说的, 不用担心, 我们接下来处理这个问题

生成 TestTargets

在project.yml 文件中添加下面的 target :

  XcodegenApp-iOS-Tests:
    type: bundle.unit-test
    platform: iOS
    deploymentTarget: "10.3"
    sources:
      - path: XcodegenAppTests
    dependencies:
      - target: XcodegenApp

再一次关闭xcode(在xcode 工程打开的时候 进行修改文件可能有异常情况出现.)

生成工程文件, 打开并运行:正常!

下面添加 UI Tests target:

  XcodegenApp-iOS-UITests:
    type: bundle.ui-testing
    platform: iOS
    sources:
      - path: XcodegenAppUITests
    dependencies:
      - target: XcodegenApp
生成一个 Framework 工程

现在让我们更深入一些:
在Xcode中维护子模块总是有点麻烦。使用xcodegen轻松将模块化引入您的应用程序

为了学习如何做到这一点,我们创建了一个XcodegenAppCore框架,其中包含经典的水果枚举:
1,在根目录创建一个文件夹XcodegenAppqCore
2,创建一个Fruit.swift 文件在目录中,加入下面的代码

public enum Fruit: String {
  case apple
  case banana
  case cherry
}

这里写图片描述

3,在XcodegenAppCore目录中添加一个 Info.plist 文件
4,添加target 在project.yml文件中

XcodegenAppCore:
  type: framework
  platform: iOS
  deploymentTarget: "10.3"
  sources:
    - path: XcodegenAppCore

5,添加

dependencies:
    - target: XcodegenAppCore

在运行xcodegenDemo taget 编译正常但什么都没有输出

6,Add

import XcodegenAppCore

在 ViewController 文件viewDideLoad()方法中添加

print(Fruit.apple)

在debug 日志中可以看到输出 framework的所有者

Adding 依赖关系

在iOS 有一个很好的方法来处理依赖关系 它就是carthage
Xcodegen使管理carthage依赖项变得非常容易,所以让我们将roberthein的TinyConstraints添加为布局库来学习如何完成:

1,Run 安装 carthage

brew install carthage

2,创建一个名为 Cartfile的文件

3,Add

github "roberthein/TinyConstraints"

这里写图片描述
4,运行

carthage update --platform iOS

5,在project.yml 文件中 XcodegenApp target 添加下面代码

  - carthage: TinyConstraints

关闭xcode 运行xcodegen , 运行工程, 你现在就可以使用TinyConstraints库了

import TinyConstraints

In the viewDidLoad(), add:

let fruitLabel = UILabel()
fruitLabel.text = Fruit.banana.rawValue

view.addSubview(fruitLabel)
fruitLabel.centerInSuperview()

这里写图片描述
运行工程 查看TinyConstraints 的行为.
这里写图片描述

接下来我们做什么?

在不久的将来我们就会看到xcodegen 更多的功能 比如 生成特别的调试功能的taget.
敬请期待

致谢

感谢Yonas Kolb在发布前审阅本文,并感谢Maximiliane Windl测试教程,修复问题和制作屏幕截图。还要感谢Melanie Kloss一如既往的大力支持.

关于 ‘Better iOS Projects’的其它参考:
XcodeGen: 提升 SwiftUI 编码能力的工具 XcodeGen 是一个用于提升 SwiftUI 编码能力的开发工具,它可以帮助开发者更高效地管理和配置 Xcode 项目。本文将介绍 XcodeGen 的作用以及为什么要使用这个工具,并提供一些相关的源代码示例。 阅读详情

相关推荐

数字IC后端面试题目汇总含解析,ICer上岸必备!

今天IC修真院为大家带来了数字IC后端的面试题目,希望大家能够用得上。

coachip的博客 2447

XcodeGen: 构建Xcode项目配置的新时代

是一个由 Yonas Kolb 开发的强大开源工具,它允许开发人员使用 YAML 格式的文件来生成和维护 Xcode 项目的配置。这使得构建、管理和版本控制 Xcode 项目变得更加简单和直观。 ## 项目简介 在传统的 Xcode 项目管理中,开发者需要通过图形界面手动设置各种属性,如目标、依赖项、构建规则等。这种方式既费时又容易出错。而 XcodeGen 提供了一个命令行接口,通过解析 Y...

gitblog_00058的博客 698

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

【亲测免费】 XcodeGen 使用教程

XcodeGen 是一个用 Swift 编写的命令行工具,它通过一个项目规范文件和文件夹结构来生成 Xcode 项目。这个工具可以帮助开发者自动化项目配置过程,减少手动操作带来的错误。 ## 项目快速启动 ### 安装 首先,通过 Homebrew 安装 XcodeGen: ```bash brew install xcodegen ``` ### 生成项目 1. 创建一个项目规范文件...

gitblog_00595的博客 991

【机器人学习】abb工业机器人运动学分析与圆弧轨迹规划(三维模型+matlab代码)

下载链接 solidworks模型 D-H建模 圆仿真过程 视频过程:

yjw0911的博客 2532

Open3D 点到面的ICP配准算法【2025最新版】

点到面的ICP(python版本)博客长期更新,本文最近一次更新时间为:2025年2月2日,代码已更新至Open3D 0.18.0版本。

点云侠的博客 38万+

XcodeGen:自动化您的Xcode项目生成

XcodeGen 是一个用 Swift 编写的命令行工具,它通过您的文件夹结构和一个项目规范文件来生成 Xcode 项目。这个项目规范文件可以是 YAML 或 JSON 格式,定义了您的目标、配置、方案、自定义构建设置等多种选项。XcodeGen 能够自动解析并引用所有源目录,同时保持文件夹结构不变。它提供了许多默认设置,使得您只需自定义必要的部分,非常适合复杂的项目定义。 ## 项目技术分析 ...

gitblog_00514的博客 538

使用蒙特卡洛模拟方法在MATLAB中估算居里温度: 一个详细而通俗的指南

居里温度是磁性材料失去磁性的温度。但是,计算机模拟为我们提供了一个在理论和实验之间的桥梁,使我们能够在不进行实际测量的情况下估计这一重要参数。在下一部分,我们将详细介绍蒙特卡洛迭代的核心代码,以及如何使用它来模拟磁性材料中原子的行为。在估算居里温度的上下文中,我们将使用蒙特卡洛方法来模拟磁性材料中的原子或分子的行为。通过使用蒙特卡洛方法,我们可以在MATLAB中估算居里温度,从而为理论研究和实验设计提供有价值的信息。:我们使用的是一个有限的尺寸的网格模型,这可能导致一些大小效应,特别是在接近居里温度时。

qq_38334677的博客 977

告别Xcode项目合并冲突:用XcodeGen彻底解决团队协作痛点

还在为Xcode项目的`.xcodeproj`文件合并冲突而烦恼吗?还在手动拖拽文件到Xcode中管理项目结构吗?XcodeGen作为一款强大的Swift命令行工具,能够根据YAML配置文件自动生成Xcode项目,让团队协作变得前所未有的顺畅!😊 ## 为什么你需要XcodeGen? 如果你在团队协作开发iOS或macOS应用,肯定遇到过这样的场景: - 多个开发者同时修改项目文件,导致`

gitblog_00668的博客 887

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 266

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

这款工具能帮你更好地构建 Xcode 项目

????????关注后回复“进群”,拉你进程序员交流群????????来源丨小集(ID:zsxjtip)XcodeGen 是一个用 Swift 编写的命令行工具,它使用文件夹结构和项目规范生成您的 Xcode...

iOS_开发 357

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

XcodeGen深度解析:Swift项目自动化构建的最佳实践

在iOS和macOS开发领域,手动管理Xcode项目文件一直是开发团队面临的技术痛点。传统的`.xcodeproj`文件不仅难以维护,还经常在团队协作中引发合并冲突,严重影响了开发效率和代码质量。XcodeGen作为一款基于Swift的命令行工具,通过声明式配置和自动化生成机制,彻底解决了这些问题,为现代Swift项目提供了优雅的构建解决方案。 ## 🔧 技术痛点分析:传统Xcode项目管理的

gitblog_00227的博客 306

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

XcodeProj生态系统解析:Tuist、XcodeGen等项目的底层支撑

XcodeProj是一个功能强大的开源项目,它能够帮助开发者读取、更新和写入Xcode项目文件,为Tuist、XcodeGen等知名工具提供了坚实的底层支撑。通过XcodeProj,开发者可以更高效地管理和操作Xcode项目,提升开发效率。 ## XcodeProj的核心功能与价值 XcodeProj作为Xcode项目文件操作的利器,其核心功能在于能够解析和生成Xcode项目的各种组成部分。它

gitblog_01158的博客 959

终极Xcode项目管理指南:告别.xcodeproj合并冲突的完整解决方案

还在为Xcode项目文件合并冲突而烦恼吗?每次团队协作都要小心翼翼地处理`.xcodeproj`文件?XcodeGen为你提供了一套完整的自动化解决方案,让你彻底告别手动管理Xcode项目的痛苦。这个基于Swift的命令行工具能够根据配置文件自动生成Xcode项目,将项目管理从繁琐的手动操作中解放出来,让你专注于真正的代码开发。 ## 🤔 为什么你的团队需要XcodeGen? 想象一下这样的

gitblog_00585的博客 343

XcodeGen 项目常见问题解决方案

XcodeGen 是一个用 Swift 编写的命令行工具,主要用于根据文件夹结构和项目规范生成 Xcode 项目。项目规范通常是一个 YAML 或 JSON 文件,定义了目标、配置、方案、自定义构建设置等多种选项。XcodeGen 能够自动解析源目录并适当引用,同时保留文件夹结构。它提供了许多默认设置,用户只需自定义必要的部分。 ## 新手使用注意事项及解决方案 ### 1. 项目规范文件格式...

gitblog_00899的博客 600

iOS开发十年:从Objective-C到SwiftUI的技术演进与实战经验

移动应用开发领域的技术栈迭代速度远超想象,从手动内存管理到现代化并发,从Frame布局到声明式UI,每一次变革都在重塑开发者的工作方式。理解语言与框架的演进逻辑,掌握架构分层和性能优化的核心方法,是应对技术浪潮的基础能力。在实际工程中,网络层如何借助async/await告别回调地狱,数据持久化如何在Core Data与SwiftData之间取舍,后台任务如何规避推送延迟陷阱,这些实践直接决定App的稳定性与用户体验。与此同时,跨端开发(如uniapp、Flutter)与新兴的鸿蒙生态带来了更多选型维度,但

weixin_33968104的博客 513

XcodeGen 项目教程

XcodeGen 项目的目录结构如下: ``` XcodeGen/ ├── Assets/ ├── Docs/ ├── SettingPresets/ ├── Sources/ ├── Tests/ ├── scripts/ ├── github/workflows/ ├── gitattributes ├── gitignore ├── swiftformat ├── CHANGELOG.md...

gitblog_00742的博客 527

XcodeGen 项目推荐

XcodeGen 是一个用 Swift 编写的命令行工具,旨在通过定义项目规范文件(YAML 或 JSON 格式)来生成 Xcode 项目。这个工具的主要目的是简化 Xcode 项目的创建和管理,特别是在大型项目中,通过自动生成项目文件来减少手动配置的工作量。 ## 项目核心功能 XcodeGen 的核心功能包括: 1. **自动生成 Xcode 项目**:通过项目规范文件,自动生成 Xco...

gitblog_00578的博客 934

告别Xcode项目配置噩梦:XcodeGen终极指南帮你实现零冲突开发

在iOS和macOS开发中,Xcode项目文件(.xcodeproj)一直是团队协作的痛点。合并冲突、配置不一致、环境差异等问题困扰着无数开发者。XcodeGen作为一款基于Swift的命令行工具,通过YAML配置文件自动生成Xcode项目,彻底解决了这些痛点,让开发者能够专注于核心业务逻辑而非繁琐的配置工作。这款强大的工具不仅简化了项目配置流程,还实现了真正的配置即代码理念,是现代iOS开发团队

gitblog_00703的博客 297

XcodeGen项目配置详解:构建设置与依赖管理

XcodeGen是一个强大的项目配置工具,它通过YAML文件定义项目结构,自动生成Xcode项目文件。本文将深入解析XcodeGen中的构建设置和依赖管理两大核心功能,帮助开发者更好地掌握项目配置技巧。 ## 构建设置配置 ### 构建设置的层级结构 Xcode中的构建设置遵循特定的优先级顺序,从高到低依次为: 1. 目标级别设置 2. 目标xcconfig文件 3. 项目级别设置 4. ...

gitblog_00258的博客 454

XcodeGen新手入门:零基础也能掌握的项目生成工具

你是否经历过这些开发噩梦?团队协作时`.xcodeproj`文件合并冲突导致开发停滞,手动添加文件后忘记配置对应Target,多平台项目配置不一致引发构建失败。XcodeGen——这款用Swift编写的命令行工具,彻底解决了Xcode项目管理的痛点,让你告别繁琐的手动操作,专注于代码逻辑本身。 读完本文,你将获得: - 🚀 从零到一掌握XcodeGen安装与基础使用 - 📝 编写专业`pro

gitblog_01025的博客 515

XcodeGen:终结Xcode项目配置混乱的自动化工具

在多人协作开发中,Xcode项目文件(.xcodeproj)常常成为团队效率的隐形障碍。当两位开发者同时修改依赖配置时,Git合并冲突几乎不可避免;新成员加入项目时,环境配置需要耗费数小时才能与团队保持一致;跨平台开发中,iOS和macOS的项目设置需要重复维护。这些问题的根源在于Xcode项目文件的二进制特性,使得配置难以追踪和版本化。解决这些痛点的核心方案是"配置即代码"(Configurat

gitblog_00942的博客 269

06/13 HXCodeGen

****/@Resource/*** 解析 class 的信息**/@Override}try {}}/*** 解析 class 的信息**/}}}/*** 从给定的文件 解析给定的表名**/i++) {break;}}}i >= 0;}}}}/*** 从给定的文件 解析给定的字段列表**/i++) {}}}/**

970655147的专栏 311
上一篇: Swift可选类型(Optional)的介绍和使用场景
下一篇: GPUImage源码解读(十一)
Philm_iOS
博客等级 码龄8年 74粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值