利用XCode Targets创建多scheme的iOS项目

前言

在我们的开发iOS的时候,通常会遇到一个项目打包成多个环境的问题,也会遇到一套代码打包成多个项目的问题,最常用的做法是写一个配置文件,在打包的时候修改一下配置文件,来达到打不同配置的包的目的。这里,我为大家介绍一种新的方式,可以大大提高打包时的效率,当然,因为我从苹果发布swift开始就开始用swift开发程序,这一篇教程是有关swift项目的配置,oc项目的配置我会另外写一篇文章来介绍。

实现步骤

1、创建一个程序,命名为TargetsDemo

1506319920791.jpg

2、右键点targets->TargetsDemo 并点击Duplicate

1506320759810.jpg

3、这里我们可以发现我们的项目出现了以下变化:
  • targets中多了一个名为TargetsDemo copy的项目

1506320857318.jpg

  • 项目文件中多了一个TargetsDemo copy-Info.plist 的文件

1506320910286.jpg

  • 点击左上角TargetDemo会多出了一个TargetsDemo copy的target

1506321050026.jpg

当然,大多数人都不能接受自动生成的copy为后缀的名字,而且TargetsDemo copy-Info.plist文件名也需要修改,首先我们来修改TargetsDemo copy-Info.plist, 将TargetsDemo copy-Info.plist重命名为TargetsDemoDev.plist 并拖动到info.plist同一个目录里.

1506321391614.jpg

同时把targets里的 TargetsDemo copy 也重命名为TargetsDemoDev, 由于修改了plist文件的名字和位置,我们需要在TargetsDemoDev这个target的Build Setting中将相应的配置做修改:

1506321488865.jpg

1506321594869.jpg

接下来,将左上角Manage Schemes中将Scheme的名字也改成TargetsDemoDev

1506321710059.jpg

1506321710059.jpg

1506321738560.jpg

今后我们选择此处不同的scheme就能打不同的包了

4、实现不同的配置

我们有了共享同一套代码的两个targets,有了能一键切换的schemes, 接下来我们就要实现不同的target打包的时候代码能够运行的两套配置的能力了。 在TargetsDemoDev的build setting中找到Other Swift Flags这个项目,在里面添加 -DDEVELOPMENT

1506324399785.jpg

接下来就可以在代码里实现了,我们先来创建一个Config.swift的文件,创建的时候记得勾选TargetsDemoDev这个target:

1506322406225.jpg

这时我们在main.storyboard中的视图中添加一个label,并在代码中赋值为配置的symbol:

#if DEVELOPMENT
    let symbol = "Development"
#else
    let symbol = "Production"
#endif

1506322633625.jpg

切换不同的scheme运行,我们可以看到显示的内容并不相同,这里的symbol可以换成不同环境的url,不同环境的标题等需要分开配置的内容。

1506323102842.jpg

1506324404728.jpg

5、What's more?
  • 如果你想给不同的target不同的icon,不同的启动界面,甚至不同的storyboard, 你可以创建另一个App icons, LaunchScreen.storyboard 或者storyboard, 并在TargetsDemoDev.plist中配置即可。
  • 如果想一套代码打包成不同项目,只需要在对应的target中配置对应的Bundle Identifier以及 Display Name即可。

希望你能喜欢这篇教程,最后的demo可以从我的 github页面中下载:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端生活

Linux(十五)进程管理

2378
来自专栏nummy

sphinx入门指南【2】 toctree指令详解

reST本身并不支持同时与多个文档进行交互,或者说将一个文档保存到多个文件中。Sphinx提供了自定义指令toctree来支持实现这个功能。

1113
来自专栏重庆的技术分享区

MySQL在windows下的安装与配置

官网版本: https://dev.mysql.com/downloads/mysql/5.6.html#downloads

2084
来自专栏Linux运维学习之路

ansible批量管理软件部署及剧本

服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 S...

8337
来自专栏云计算教程系列

Shell脚本入门

Shell脚本可用于运行多个命令,广泛适用于困难参数的单个命令,或用于分发工作的更友好的用户界面。本质上讲,它可以通过自动化来简化您不必手动完成操作。

1311
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装phpIPAM

phpIPAM是一个专用的IP地址管理工具,超越低技术选项通过提供自动ping扫描,状态报告,让您可以看到哪些主机已启动,哪些已停机,通过电子邮件发送有关你正在...

1750
来自专栏xcywt

《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限

Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件。 用户权限通过创建用户时分配的用户ID(UID)来跟踪的。每个用户...

2205
来自专栏SpringBoot 核心技术

第十四章:QueryDSL与SpringDataJPA共同服务于SpringBoot

3324
来自专栏静下来

增加wordpress可以上传.torrent文件

今天想上传个文件,是.torrent后缀的。。就是种子,为什么要上传,咱就不说了。。。wordpress本身是不支持上传.torrent文件的,不过我们可以用代...

3295
来自专栏FreeBuf

WPScan使用完整攻略:如何对WordPress站点进行安全测试

WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用PHP编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和Wo...

1990

扫码关注云+社区