YunsChou

既然选择了远方,便只顾风雨兼程

一名iOS开发者


欢迎你的访问

Xcode中Targets使用(多图,非WI-FI慎入)

目的

使用 targets 进行多版本管理

场景举例

新浪微博的第三方客户端weico普通版是免费的,Pro版下载是收费的

Pro版对比普通版,APP图标和启动图等素材是不一样的,且Pro版普通版功能上会增加一些特殊功能

如果开发人员将这两个APP分开维护,当接到新的需求时,先在一个APP开发好,再将代码copy至另一个工程,我们每个人应该都能做到

但是想象一下,当项目越来越大、需求修改频繁时,两个工程间来回copy代码也是不少的工作量,而且这样重复的劳动完全没有任何价值,对于项目进度和开发者本身都是灾难

也许会有同学提出,使用组件化方案来解决问题。的确,组件化可以重复利用开发好的模块,但在面对两个工程不同的需求时(如不同的图片、颜色等),我们就要在模块中增加接口来应对,尤其在面对不同业务逻辑时(比如是否开放功能等),我们就不得不把一个完整的组件再细分下去,但仍然避免不了在两个工程间来回折腾,这样会让我们很被动

场景小结:基于同一份代码,产出不同的product,可以利用targets设置不同的编译条件来实现

实战操作

一、主要步骤分为:

  1. 创建工程
  2. 使用Duplicate添加targets
  3. 修改targets名称
  4. 修改info.plist文件路径,并重命名info.plist
  5. 使用add Files to 'TargetsDemo'...将info.plist文件添加至Xcode
  6. 使用Choose info.plist File...为对应的targets添加的info.plist文件
  7. 为每个targets添加对应的app图标(和启动图)
  8. 为每个targets设置预编译宏
  9. 修改Schemes名称
  10. 使用预编译宏为targets添加预编译条件
  11. 不同targets运行后应该是不同的product

二、操作截图

  • 创建工程

img

  • 使用Duplicate添加targets

img

  • 选择Duplicate Only(按需选择)

img

  • 新增targets后如下:多了targets和对应的info.plist文件

img

  • 修改target名称

img

  • 修改后如下

img

  • 修改info.plist文件路径,并重命名

img

img

  • Xcode中提示找不到被重命名的info.plist文件(删除红色的文件)

img

  • 使用add Files to 'TargetsDemo'...从工程文件夹下添加被重命名的info.plist文件

img

  • 添加完成后如下

img

  • 在Targets_A和Targets_B中使用Choose info.plist File...添加对应的info.plist文件

img

  • 添加完成后如下

img

  • 为targets添加app图标(启动图类似)

img

  • 重命名原appicon名称

img

  • 重命名后如下

img

  • 为targets选择对应的app图标

img

  • 为targets设置预编译宏

img

  • 添加完成后如下

img

  • 使用Manage Schemes…修改Schemes名称

img

img

  • 修改后,点击Close

img

  • 修改完成后如下

img

  • 使用预编译宏为targets添加条件

img

  • 不同targets运行后应该是不同的product

img

最近的文章

【openshift-0】使用Python在openshift上生成在线API

【序言】一、背景 每一个程序员都有一个成为全栈工程师的梦想!作为一名移动端开发工程师,有时并不满足只做前端开发,也想一探后端究竟。也会时常想着,有朝一日灵感闪现,自己写前端和后端吧,实现内心那些伟大的idea。前端与后段交互需要接口,那么我们就要有能力为自己提供 在线API二、目标目标:通过openshift提供的免费服务,使用Python开发在线可访问的API前期探索:工作之外学习过一段时间Ruby和PHP,要么觉得相关资料较少,要么觉得自己有点不适应(没有实际项目练过手),学而不能时...…

openshift继续阅读
更早的文章

Xcode中TimeProfile使用

一、对Xcode进行设置如果想要在TimeProfile中直观的查看方法耗时,需要对Xcode进行设置在Xcode->Build Setting->Debug Information Format中设置选项为:DWARF with DSYM File注意:不为DWARF with DSYM File选项的话,在TimeProfile中就只能看到一堆线程二、对TimeProfile进行设置1、在TimeProfile的Call Tree中,右侧面板有三个检查器:record se...…

Xcode继续阅读