iOS项目之多Targets和多环境配置
项目中使用的同一套代码,但需要开发多个app,app中内容基本上相同,只有一些小小的区别,例如名称等等,每个app中又需要分开发环境(Dev)、测试环境(Test)、正式环境(Pro)。
下面就开始搭建这样的配置:
第一步,对目标target进行复制(Duplicate)

如果当前项目为iPhone项目的话,会出现下面的提示

这里只需要复制iPhone项目,所以选择 “Duplicate Only”。
此时在项目中会增加两个东西:

为了便于区分,这里对相应target和plist进行重命名,修改后如下图:

第二步,对target重新配置plist文件
第三步,新增配置环境

这里添加开发、测试、正式三个环境,最终效果如图

第四步,新增Scheme,用来配置环境,这里直接选择Manage Schemes进行设置

在设置界面新增Scheme,选择相应的target,并设置Scheme的名称

勾选需要显示的Scheme

分别对不同的Scheme进行配置

第五步,新增自定义设置

配置不同的bundleIdentifier和bundleName

修改info.plist文件中的bundleIdentifier和bundleName

对TargetTwo进行重复以上操作

第六步,添加环境变量参数

TargetOne项目的环境变量参数设置为:dev=1,test=2,pro=3

TargetTwo项目的环境变量参数设置为:dev=4,test=5,pro=6

第七步,分别设置pch文件和环境配置文件

在环境配置文件中可以设置不同的BASE_URL之类的参数等等
分别在不同的target中设置pch文件的引用

第八步,配置Podfile文件
platform :ios, '9.0' def normalPod pod 'MJRefresh'
pod 'AFNetworking' end def otherPod pod 'Masonry' end target 'TargetOne' do
normalPod
end target 'TargetTwo' do
normalPod
otherPod
end
可参考以上代码,根据自己的需要进行修改,然后 pod install
第九步,设置不同的Assets.xcassets和LaunchScreen.storyboard等,在不同target中有差异的文件(因项目而异)

这里以 Assets.xcassets 为例:
选择该文件后,可以在右侧的 Target Membership 中进行勾选需要在哪个target中使用。如果需要区分的话,再新增一个 Assets 文件,分别引用到不同的 target 中就OK了。
大功告成,看看效果吧:


GitHub:https://github.com/sjxjjx/TargetsAndEnvironments
iOS项目之多Targets和多环境配置的更多相关文章
- iOS学习——iOS项目Project 和 Targets配置详解
最近开始学习完整iOS项目的开发流程和思路,在实际的项目开发过程中,我们通常需要对项目代码和资料进行版本控制和管理,一般比较常用的SVN或者Github进行代码版本控制和项目管理.我们iOS项目的开发 ...
- IOS百度地图之--->第一篇《环境配置与基本使用》
Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...
- C#项目 App.config 配置文件不同使用环境配置
问题 部署项目时,常常需要根据不同的环境使用不同的配置文件.例如,在部署网站时可能希望禁用调试选项,并更改连接字符串以使其指向不同的数据库.在创建 Web 项目时,Visual Studio 自动生成 ...
- 从mac终端创建cocos2d-x项目在xcode和eclipse正常运行环境配置
一.创建可以同时运行在xcode和eclipse的项目: 1.打开mac终端,进入cocos2d-x目录下的tools/project-creator,执行命令./create_project.py ...
- Eclipse+Maven整合开发Java项目(一)➣Maven基础环境配置
概述 Maven是一个Java语言编写的开源项目管理工具,是Apache软件基金会的顶级项目.主要用于项目构建,依赖管理,项目信息管理.有些项目需要添加响应的依赖包,Maven就是公用包集合.存在远程 ...
- iOS项目——项目开发环境搭建
在开发项目之前,我们需要做一些准备工作,了解iOS扩展--Objective-C开发编程规范是进行开发的必备基础,学习iOS学习--Xcode9上传项目到GitHub是我们进行版本控制和代码管理的选择 ...
- 一、React Native 搭建开发环境(1)(Mac OS - IOS项目)
React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 目的: 由于我想在一台电脑上同时开发IOS和Android两 ...
- 一、React Native 搭建开发环境(1)(Mac OS - IOS项目篇)
React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 原因:由于我想在一台电脑上同时开发IOS和Android两个 ...
- iOS项目之报错笔记
问题一: linker command failed with exit code 1 (use -vto see invocation) 原因:导入了.m的头文件,导致同时有两个一样的.m文件在编译 ...
随机推荐
- Windows系列和office系列通用激活工具KMSAuto
Windows系列和office系列通用激活工具KMSAuto KMSAuto 是一款俄罗斯人 Ratiborus 制作与设计开发的能够批量激活大客户授权版本的微软 Office 办公套件以及 Win ...
- 浅入深出Vue:注册
基本布局已经有了, 现在我们来开始做我们的注册页面~ 当然需要注册才能发表文章啊(糟老头子坏得很, 我可以只有我一个人能发啊). 这里我们设定只有注册才能发表文章,也就淡化了管理员这个概念.在开发中先 ...
- Vue快速学习_第三节
过滤器 局部过滤器(组件内部使用的过滤器,跟django的很像, filters: {过滤器的名字: {function(val, a,b){}}} 全局过滤器(全局过滤器,只要过滤器一创建,在任何组 ...
- break使用不当引发的一个“血案”
最近在网上冲浪,读到一则新闻,摘抄下这则新闻: ======================= 以下文字摘抄自互联网==================== 1990年1月15日,AT&T电话 ...
- android_viewFlipper(一)
需要注意的地方已在代码中表明 package cn.com.sxp; import android.app.Activity; import android.os.Bundle; import and ...
- Mllib数据类型(密集向量和稀疏向量)
1.局部向量 Mllib支持2种局部向量类型:密集向量(dense)和稀疏向量(sparse). 密集向量由double类型的数组支持,而稀疏向量则由两个平行数组支持. example: 向量(5.2 ...
- MySql的数据库优化到底优啥了都??(2)
嘟嘟在写此篇文章之前心里先默念(简单,通俗,工整)*10 吟唱完了,进入正题 3.Memory存储引擎 除了存放一个表结构相关信息的.frm文件在磁盘上,其他数据都存储在内存中.说白点哪天你数据库死机 ...
- join,列表和字典用for循环的删除,集合,深浅拷贝
1.join() 将列表转换成字符串,并且每个字符之间用另一个字符连接起来,join后面必须是可迭代的对象(字符串,列表,元组,字典,集合),数字不能迭代 例如: s = ['a','b','c'] ...
- 图解Redis之数据结构篇——跳跃表
前言 跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.这么说,我们可能很难理解,我们可以先回忆一下链表. 一.复习跳跃表 1.1 什么 ...
- ironic+nova详解
ironic+nova详解 说明: Openstack 的安装步骤省略,按照社区的文档即可搭建出一套相对稳定的使用环境.本文档基于Newton版本. 假设现在已经有一套可用的Newton环境, 以下的 ...