美文网首页收藏ios
iOS 多target、多环境认识及使用

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

作者: ZJ_偶尔上路 | 来源:发表于2017-06-13 11:24 被阅读173次
为什么要多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包含了Copy Bundle Resources, Compile Sources, Link Binary With Libraries、info.plist等
  • Copy Bundle Resources 是指生成的product的.app内将包含哪些资源文件
  • Compile Sources 是指将有哪些源代码被编译
  • Link Binary With Libraries 是指编译过程中会引用哪些库文件
  • 最关键的就是info.plist文件,iPhone项目的很多关键性内容, 比如程序名称, 最终生成product的全局唯一id等都可用info.plist来设置。
  • 不同的target还可以定义完整的差异化的编译设置, 从简单的调整优化选项, 到增加条件编译所使用的编译条件, 以至于所使用的base SDK都可以差异化指定
注意事项
  • 新增文件、资源时,如果有多个Target,添加新文件时要注意勾选多个Target,要不然就会报错。
  • 修改Target名称、修改plist名称、修改schemes
  • 修改Bundle Identifier、选择不同证书、一些基本配置进行修改。
设置预编译宏

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


多环境创建

1.添加Build Configuration

  • 打开项目的workspace,进入Xcode的主界面。选中主要工程的project -> info,找到Configurations, 点击下方的“+”。
F7D5A7EF-DE86-4ECF-90E3-3686B13EBF5A.png
  • 从图中可以看到两个已经添加好的Configuration: Debug 和 Release,选择“deplicate debug configuration”,添加一个新的configuration,命名为DEV。
  • 从图上可以看到,configuration都已经有了默认的configuration set(也就是xxconfig文件)。这是因为我的工程中已经包含了cocoapods。默认的configuration set是pods添加的。
  • 这个时候新增加的build configuration并没有对应的pods的xcconfig,所以项目会报错。把新建的configuration 对应的set 设置为none
  • 命令行运行 pod install
之后可能会有ld: library not found for -lPods-之类的错误,在target->BulidPhase->Link Binary With Libraries 中将libPod.a删除即解决
  • 重要说明:如果没安装cocoapods忽略最后三步

2.新建并配置xcconfig文件

  • command + "n", 选择 iOS -> Other -> Configuration settings file
    新建4个xxconfig文件,我采用以下命名:


    0C9189D1-2335-4828-AFDE-1BF699A9C693.png

    如果是3个target、5种环境就要创建15个xcconfig文件。

  • 说明: 在commom.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  特有的配置
  • 完成以上后,把build configuration切换成对应的新建的文件
    可能会有如下错误:
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.然而在代码中需要根据环境改变某些变量的值怎么办呢?

  • 设置预编译头参数
    Project -> Build settings -> Apple LLVM 7.1 - Preprocessing

相关文章

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

    为什么要多target? 比如现在你公司有一个产品分为普通用户版、VIP用户版、SVIP版等。其实大部分功能是一样...

  • iOS 多Target环境配置

    iOS 多Target环境配置iOS 多Target环境配置

  • iOS多Target开发相似App

    iOS多Target开发相似App iOS多Target开发相似App

  • iOS多Target环境配置

    在项目的开发中, 经常会有测试、正式环境, 下面就来配置一下这两个环境: 一:拷贝源Target (1): 拷贝源...

  • iOS 多Target功能(区分开发、测试、线上环境)

    使用Xcode提供的多Target功能(区分开发、测试、线上环境)

  • Xcode工程配置

    多环境配置 多target,多Configuration target:一个project中可以创建多个targe...

  • iOS多Target开发

    我们在iOS开发中可能会遇到同时开发多个类似项目的情况。这些项目大同小异,有诸多代码可以共用,如果每个项目都分别开...

  • iOS多target开发

    1、新建target,如图所示,找到TARGETS列表,选中需要的target,右键选择Duplicate就可以了...

  • ios多target开发

    使用场景 1. 同一个项目,一般会分不同环境:开发环境、测试环境、准生产、生产环境。 如果通过代码要每次修改配置,...

  • iOS构建Target

    iOS构建多Target可以用来做马甲包,具有使用性。以下是构建新的Target步骤: Step 1: 拷贝一个新...

网友评论

    本文标题:iOS 多target、多环境认识及使用

    本文链接:https://www.haomeiwen.com/subject/abqnfxtx.html