iOS 项目多环境搭建

iOS 项目多环境搭建

  • 基于Target来搭建多环境

基于Target来搭建多环境的项目,本质上就是对原有Taeget进行Duplicate操作。
这样会Copy一份与原有Target相同的Target Copy。
此时也会生成一份copy的info.plist文件
在这里插入图片描述

这个时候就可以针对不同的Target做差异性配置,包括AppIcon,BundleID等。
缺点就是,当新创建的新文件的时候会根据需要是否加入另一个Target了。

  • 基于Build Configuration和Xcode Scheme来搭建多环境

1、点击+号创建需要的Configurations,然后修改名称
在这里插入图片描述

2、点击Manage Schemes然后创建对应的Scheme
在这里插入图片描述

3、根据不同的Scheme配置不同的Configuration
在这里插入图片描述

这样就配置了三个不同环境的项目环境了。

那如何给不同的项目环境配置不同的参数呢?
这里就可以采用xcconfig配置文件了。cmd + n创建三个不同名的配置文件。
在这里插入图片描述

在这里插入图片描述

然后在Build Settings中设置不同的配置文件。
在这里插入图片描述

然后在不同的配置文件中设置不同的值。

MultiEnvironmentDemo.debug.xcconfig 文件
PRODUCT_BUNDLE_NAME = debug-demo

MultiEnvironmentDemo.release.xcconfig 文件
PRODUCT_BUNDLE_NAME = release-demo

然后在info.plist配置Bundle name = $(PRODUCT_BUNDLE_NAME)
最后在不同的环境中生成的APP的name是不同的

更多的配置key从这里查找

问题一:如果项目使用了CocoaPods来管理第三方库,会生成对应的xcconfig文件或者项目中同一个环境有多个xcconfig配置文件,那么如何处理呢?
在这里插入图片描述

这个时候可以将对应的xcconfig文件引入我们一个xcconfig中然后使用。

// 引入cocopods生成的配置文件,Configurations中还是配置使用当前的xcconfig文件
#include "./Pods/Target Support Files/Pods-MultiEnvironmentDemo/Pods-MultiEnvironmentDemo.debug.xcconfig"
PRODUCT_BUNDLE_NAME = debug-demo

问题二:如果多个xcconfig配置文件中配置了对应key的值如何才能不会覆盖呢?

例如:
a.xcconfig配置如下
OTHER_LDFLAGS = -framework "Rswift"

b.xcconfig配置如下
OTHER_LDFLAGS = -framework "SnapKit"

解决办法就是在b中引入a加上$(inherited)
#include "a.xcconfig"
OTHER_LDFLAGS = $(inherited) -framework "SnapKit"

条件变量,根据SDK、Arch、Configuration对设置进行条件化

// 指定`Configuration`是debug
// 指定SDK是模拟器,还有iphoneos*、macosx*等
// 指定生效的架构为X86_64
OTHER_LDFLAGS[config=Debug][sdk=iphonesimulator*[arch=x86_64]= $(inherited) -framework "Foundation" -l"CertUtils"

优先级右低到高:
1、Project中配置的xcconfig文件
2、手动配置的Project Build Settings
3、Target中配置的xcconfig文件
4、手动配置的Target Build Settings

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值