项目中使用的同一套代码,但需要开发多个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和多环境配置的更多相关文章

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

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

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

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

  3. C#项目 App.config 配置文件不同使用环境配置

    问题 部署项目时,常常需要根据不同的环境使用不同的配置文件.例如,在部署网站时可能希望禁用调试选项,并更改连接字符串以使其指向不同的数据库.在创建 Web 项目时,Visual Studio 自动生成 ...

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

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

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

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

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

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

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

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

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

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

  9. iOS项目之报错笔记

    问题一: linker command failed with exit code 1 (use -vto see invocation) 原因:导入了.m的头文件,导致同时有两个一样的.m文件在编译 ...

随机推荐

  1. App强更逻辑实现以及版本号如何判断大小

    //在开发中,经常会遇到有些需求需要app强更,思路大概:所有请求都要带上版本号和渠道(android或ios),然后网关对这些版本号判断,如果发现这些版本号是很旧的,就返回错误码或者标志符告诉app ...

  2. 渐进式web应用开发--拥抱离线优先(三)

    _ 阅读目录 一:什么是离线优先? 二:常用的缓存模式 三:混合与匹配,创造新模式 四:规划缓存策略 五:实现缓存策略 回到顶部 一:什么是离线优先? 传统的web应用完全依赖于服务器端,比如像很早以 ...

  3. SQLite的使用案例

    示例图 : activity_main.xml : <TextView android:id="@+id/t1" android:layout_width="wra ...

  4. Kafka FAQ

    报错如下: Unable to read additional data from client sessionid 0x15d2c867a770006 使用的kafka自带的zookeeper,测试 ...

  5. Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现

    Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现 一.漏洞描述 该漏洞是由于tomcat CGI将命令行参数传递给Win ...

  6. Android 设置ImageView全屏

    Android 设置ImageView全屏代码如下: <ImageView android:id="@+id/iv_image" android:scaleType=&quo ...

  7. Java 基础知识面试题

    equals与==有什么区别? (1)==是判断两个变量或实例是不是指向同一个内存空间 (2)equals是判断两个变量或实例所指向的内存空间的值是不是相同 Object有哪些公用方法? (1)equ ...

  8. C# 不同访问符的访问级别

    public----成员可以由任何代码访问. private----成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字). internal----成员只能由定义它的项目(程序集) ...

  9. dubbo同步调用、异步调用和是否返回结果源码分析和实例

    0. dubbo同步调用.异步调用和是否返回结果配置 (1)dubbo默认为同步调用,并且有返回结果. (2)dubbo异步调用配置,设置 async="true",异步调用可以提 ...

  10. c++容器简单总结(续)

    操作 效果 vector<T> c 产生空的vector vector<T> c1(c2) 产生同类型的c1,并将复制c2的所有元素 vector<T> c(n) ...