IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

如何做Xcode工程的工程化管理

装逼程序员 2015-01-05 23:24:30 累计浏览 2,897 次
本机暂存

   有感于我厂某iOS项目的开发管理混乱,所以这里说一下我这边对Xcode工程的一些管理经验

  • 如果开发人数很多,且负责不同的部分和组件的话,可以用子Project的方式或者Workspace+多个Project的方式来分割功能和组件

  •    由于project.pbxproj这个文件很容易发生冲突(比如新增文件,删除文件,改变Build Setting等都会改变这个文件),且很难合并冲突,那么采用多Project的方式可以降低project.pbxproj冲突的机会,而一些公用的代码或组件也可以放在一个Project中,然后其他Project来依赖这个公用的Project就可以搞定了

  • 使用CocoaPods管理第三方的组件和类库

  •    至于什么是CocoaPods,可以看这篇文章 http://blog.zephyrleaves.net/?p=712

       使用CocoaPods可以极大减少对依赖包的管理成本,现在AppCode 2.5已经开始原生支持CocoaPods了,Xcode上也有对CocosPods的支持插件 https://github.com/ricobeck/KFCocoaPodsPlugin

  • 对于需要打出不同渠道或不同测试环境的包,可以通过Build Configuration来进行区分

  •    在Xcode项目->Project->Info->Configurations下面可以点+号添加自定义的Build Configuration(默认只有Release和Debug),然后针对不同的渠道和环境配置不同的Build Setting,当然一些渠道的配置也可以走XCCONFIG的方式进行配置,不过我还是建议走Build Configuration,因为这样很容易配置Scheme

  • 用Scheme来配置打包对应的Build Configuration 以及 执行 对应的 Build Configuration

  •    由于不同渠道和环境通过Build Configuration来进行区分配置,那么执行和打包的入口就需要由Scheme来进行管理,特别是在使用CocoaPods管理的情况下,整个工程是用workspace来进行管理的 ,这个时候使用xcodebuild的时候就必须指定Scheme了

       在Manage Schemes下面,可以创建多个Scheme(默认应该有一个对应Target的一个Scheme),在Edit Scheme里面可以设置不同Action(Run/Test/Profile/Analyze/Archive)对应的Build Configuration是啥,我这边是一个Build Configuration对于一个Scheme,这样很方便

       由于Scheme都是放在个人的userdata下面的,所以在Manage Schemes下面对Scheme选中Shared,那么这些Scheme就可以被共享给团队的其他成员看到并使用了

  • 使用xcodebuild命令打包

  •    由于一般情况下可能需要对多个渠道打出多个app包,如果对每个渠道都先clean在archive需要多个操作,实际上如上有配置对应渠道的Scheme后,可以用xcodebuild命令一次打出过个包来,比如:

xcodebuild -workspace XXX.xcworkspace -scheme XXX clean archive 
xcodebuild -workspace XXX.xcworkspace -scheme XXX_91 clean archive

   写这样一个shell,就可以一次打出2个archive了

   OK,上面这些都是我管理Xcode工程的一些经验,如果大家有更好的一些实践的话,都可以来告诉我哦


同分类推荐文章

  1. 「置顶」我做了什么 (2026-05-05 12:13:28)
  2. 万字长文推演:手机不再从 App 开始,Agent OS 如何接管任务入口 (2026-04-28 14:57:22)
  3. Android Perfetto 系列 10 - Binder 调度与锁竞争 (2025-11-16 15:33:30)

查看更多 移动开发 文章 →

建议继续学习

  1. Git常用命令备忘 (累计阅读 54,702)
  2. Git log diff config高级进阶 (累计阅读 24,844)
  3. Git subtree 要不要使用 –squash 参数 (累计阅读 23,400)
  4. 我的git笔记 (累计阅读 20,260)
  5. 公司倒了,请让领导先走 (累计阅读 13,407)
  6. 别为大公司拼命(译文) (累计阅读 10,299)
  7. Zend Studio集成Git使用 (累计阅读 8,982)
  8. 学你妹的计算机! (累计阅读 8,139)
  9. 个人开公司的流程,以后用得着 (累计阅读 7,926)
  10. App的成本 (累计阅读 7,584)