项目中使用的同一套代码,但需要开发多个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了。

  大功告成,看看效果吧:

  

iOS项目之多Targets和多环境配置的更多相关文章

  1. iOS学习——iOS项目Project 和 Targets配置详解

    最近开始学习完整iOS项目的开发流程和思路,在实际的项目开发过程中,我们通常需要对项目代码和资料进行版本控制和管理,一般比较常用的SVN或者Github进行代码版本控制和项目管理.我们iOS项目的开发 ...

  2. IOS百度地图之--->第一篇《环境配置与基本使用》

    Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...

  3. 从mac终端创建cocos2d-x项目在xcode和eclipse正常运行环境配置

    一.创建可以同时运行在xcode和eclipse的项目: 1.打开mac终端,进入cocos2d-x目录下的tools/project-creator,执行命令./create_project.py ...

  4. Eclipse+Maven整合开发Java项目(一)➣Maven基础环境配置

    概述 Maven是一个Java语言编写的开源项目管理工具,是Apache软件基金会的顶级项目.主要用于项目构建,依赖管理,项目信息管理.有些项目需要添加响应的依赖包,Maven就是公用包集合.存在远程 ...

  5. iOS项目——项目开发环境搭建

    在开发项目之前,我们需要做一些准备工作,了解iOS扩展--Objective-C开发编程规范是进行开发的必备基础,学习iOS学习--Xcode9上传项目到GitHub是我们进行版本控制和代码管理的选择 ...

  6. 一、React Native 搭建开发环境(1)(Mac OS - IOS项目)

    React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 目的: 由于我想在一台电脑上同时开发IOS和Android两 ...

  7. 一、React Native 搭建开发环境(1)(Mac OS - IOS项目篇)

    React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 原因:由于我想在一台电脑上同时开发IOS和Android两个 ...

  8. cocos2d-x:将iOS项目编译成Andriod项目

    来源:http://www.cnblogs.com/angzn/p/3328049.html 一.Android 环境搭建 1.安装Andriod-NDK(Native Development Kit ...

  9. cocos2d-x 学习笔录:将iOS项目编译成Andriod项目

    一.Android 环境搭建 1.安装Andriod-NDK(Native Development Kit) 新建一个文件夹(eg:NDK),解压Android-NDK,将解压文件与压缩包放在一个目录 ...

  10. ios项目里扒出来的json文件

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...

随机推荐

  1. 前端面试题2016--CSS

    介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种,IE 盒子模型.W3C 盒子模型:(2)盒模型:内容(content).填充(padding).边界(margin). ...

  2. 怎么定义 logger

    随便打开一个 spring 的 源文件,比如  PathMatchingResourcePatternResolver.class 里面是这样定义logger 的 import org.apache. ...

  3. IIS问题汇总

    1.问题描述   VS和Framework的安装顺序不对导致网站打不开   原因分析   Framework出现问题   解决办法   重新注册Framework版本   a.开始->运行-&g ...

  4. Android 性能优化 三 布局优化ViewStub标签的使用

    小黑与小白的故事,通过虚拟这两个人物进行一问一答的形式来共同学习ViewStub的使用 小白:Hi,小黑,ViewStub是什么?听说能够用来进行布局优化. 小黑:ViewStub 是一个隐藏的,不占 ...

  5. php 上传文件 $_FILES['']['type']的值

    php 上传文件 $_FILES['']['type']的值 一个函数 function upload_file($fname,$ftype,$fsize,$ferror,$ftmp_name,$fp ...

  6. 通过渲染改变tabBarItem的背景图片

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #703daa } p.p2 { margin: 0.0px 0. ...

  7. 【html5】html5学习笔记2--表单

    html5 新增输入类型 html5新增了 email.number.Date pickers (date, month, week, time, datetime, datetime-local) ...

  8. 安卓开发学习笔记(三):Android Stuidio无法引用Intent来创建对象,出现cannot resolve xxx

    笔者在进行安卓开发时,发现自己的代码语法完全没有问题.尤其是创建intent对象的时候,语法完全是正确的,但是Android Stuidio却显示报错,Intent类显示为红色,如图所示: 代码如下所 ...

  9. 关于链表所有操作,面试必考C++

    #include <iostream> #include <stack> using namespace std; //链表的结构体 struct ListNode { int ...

  10. Sublime Text 许可证

    ----- BEGIN LICENSE Alexander Single User License EA7E- 51F47F09 4EAB1285 7827EFF0 8B1207DC A76A6EA3 ...