收藏ios

iOS 多target、多环境认识及使用

2017-06-13  本文已影响173人  ZJ_偶尔上路
为什么要多target?

比如现在你公司有一个产品分为普通用户版、VIP用户版、SVIP版等。其实大部分功能是一样的,只不过有一些功能需要成为VIP或者SVIP才能使用,这时候多target就是最佳选择。
简单的说,产品功能类似,只有部分功能需要做不同处理的时候选择使用多target。

为什么要多环境?

一般情况下我们做产品的时候都会有开发接口、测试接口、正式接口等,也就是说在不同情况下使用不同的url去请求数据,这个时候就需要用多环境了。“不同接口”只是一个举例,在做一个产品的时候,不同的情况下会有更多更复杂的不同配置,多环境就能够完美的解决问题。

--------------------------------------------------------------------------------------------------------------------
多target的创建
屏幕快照 2017-06-13 上午10.26.32.png

点击 Duplicate就会复制出一份XXX Copy的target,可以看到工程目录中多了一个XXX copy-Info.plist文件,就是这个新target的info.plist,所有的配置都可以在这里进行配置。

创建全新Targets

可用通过菜单Editor->Add Target->Application->Singe View Application->Product Name
来新增

Targets之间异同
注意事项
设置预编译宏

Target 开发版->Build Settings然后搜索Preprocessor Macros然后增加宏,区别不同target、shemes


多环境创建

1.添加Build Configuration

F7D5A7EF-DE86-4ECF-90E3-3686B13EBF5A.png
之后可能会有ld: library not found for -lPods-之类的错误,在target->BulidPhase->Link Binary With Libraries 中将libPod.a删除即解决

2.新建并配置xcconfig文件

BUILD_VERSION = 1.0.0

在其它xcconfig文件中做如下配置:

//导入公共 config

#include "Common.xcconfig"

//导入pods 对应的 config

#include "Pods/Target Support Files/Pods-DMMutiTargetScheme-DMMutiTargetSchemeBase/Pods-DMMutiTargetScheme-DMMutiTargetSchemeBase.debug.xcconfig"
特别注意:- 可能会因为项目名称的不同导致路径不同,如果不太确定的可以再次pod install。
pods会给出提示,其中包含了正确的路径(文件相对路径)。

APP_DISPLAY_NAME = DEV  特有的配置
diff: /../Podfile.lock: No such file or directory   
diff: /Manifest.lock: No such file or directory error: The sandbox is not in sync with the Podfile.lock. 
Run 'pod install' or update your CocoaPods installation.
这种错误就要查看xcconfig文件中,include的pods文件路径是否正确。

#include "Pods/Target Support Files/Pods-[工程名称]-[target名称]/Pods-[工程名称]-[target名称].[环境名称].xcconfig"

3、设置环境变量

完成上面的步骤就已经添加好了环境,剩下的就是设置环境变量
在Info.plist文件中,设置Bundle name 为

4F48BFE5-7BA6-44ED-A588-AE078226FB95.png

应用的名称就会根据配置改变了。

4.然而在代码中需要根据环境改变某些变量的值怎么办呢?

上一篇 下一篇

猜你喜欢

热点阅读