美文网首页iOSiOS常用
iOS-开发进阶01:多环境配置

iOS-开发进阶01:多环境配置

作者: differ_iOSER | 来源:发表于2021-02-03 09:59 被阅读0次

iOS 开发进阶 文章汇总

本篇文章主要介绍多环境配置 & xcconfig文件使用

目录

一、多环境配置

多环境配置主要有以下几种形式:

  • Project: 包含了项目的所有的代码、资源文件、所有信息...
  • Target: 对指定代码和资源文件的具体构建方法
  • Scheme:对指定Target的环境配置
  • xconfig:将配置写到对应的文件中
1、创建多Target
  • 通过多Target可对不同的Target设置不同的Bundle ID用于区分开发ID生产ID
  • 也可以针对不同的Target配置不同的App Icon、App Display Name
  • 还可以在Build Phases中针对不同的Target增减编译的源文件和资源文件
应用场景:仅在开发Target下测试一个功能

如果是OC代码中使用DEV预定义宏:

如果是Swift代码中使用DEV预定义宏:

其中-D的含义查看如下:(也就是将声明的变量设置为TRUE)

使用如下代码即可实现:

#if DEV
    NSLog(@"DEV");
#else
    NSLog(@"xxx");
#endif
2、创建Scheme

通过添加不同的Scheme对应不同开发环境

应用场景:不同的开发环境配置不同的HOST

Info.plist中添加如下字段供外界调用:

使用代码如下:

NSString *infoPath = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:infoPath];
NSLog(@"%@",infoDic[@"HOST_URL"]);

通过多Scheme也可以通过Build Settings配置不同的图标...

3、通过xcconfig文件管理Build Settings中的配置

Pod 中引入的文件就是通过xcconfig文件管理Build Settings中的配置

创建自己的xcconfig文件,并修改系统xcconfig文件配置:

注意:xcconfig文件的命名需要以所在文件夹的名称作为前缀然后是项目名、环境名称

使用xcconfig定义不同环境的HOST_URL

Config-TestCode-debug.xcconfig文件中添加:HOST_URL = http://192.168.1.100

Info.plist中添加如下字段供外界调用:

使用代码如下:

NSString *infoPath = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:infoPath];
NSLog(@"%@",infoDic[@"HOST_URL"]);
Config-TestCode-debug.xcconfig文件中添加动态库的配置:OTHER_LDFLAGS = -framework "AFNetworking"
HOST_URL = 192.168.1.100

// ld
OTHER_LDFLAGS = -framework "AFNetworking"

xcconfig文件本质就是Key-Value,可以配置Build Settings中的绝大部分字段
xcconfig文件中对应Build Settings中字段的缩写对应关系参考: Xcode Build Settings

4、多环境之间的关系如下:

二、xcconfig文件冲突解决

如果使用自己创建的xcconfig文件那么执行pod install就会提示我们pod生成的xcconfig文件可能不会产生效果。要解决这个问题就需要在我们自己创建的xcconfig文件中引入pod生成的xcconfig文件:

// 绝对路径、相对路径都可以
#include "Pods/Target Support Files/Pods-TestCode/Pods-TestCode.debug.xcconfig"

自己创建的xcconfig文件中存在pod生成的xcconfig文件中相同的字段,那么就会覆盖pod中的字段,因此要想两个文件中的字段都生效需要使用继承标识:

OTHER_LDFLAGS = $(inherited) -framework "AFNetworking"

三、xconfig文件使用中的问题

1、URL变量中存在//,后面的字符串会被当做注释
// 通过定义一个变量来解决
SLASH =/
HOST_URL = http:${SLASH}/192.168.1.100
2、使用变量时${}和$()包括变量作用相同
3、条件设置
OTHER_LDFLAGS[config=Debug][sdk=iphonesimulator*][arch=x86_64] = $(inherited) -framework "AFNetworking"

经过上述条件设置后AFNetworking库仅会在Debug、模拟器、X86_64架构下编译
[sdk=iphoneos*]表示真机

相关文章

  • iOS 开发进阶 文章汇总

    0、多环境开发配置iOS-开发进阶01:多环境配置[https://www.jianshu.com/p/c40b3...

  • iOS-开发进阶01:多环境配置

    iOS 开发进阶 文章汇总 本篇文章主要介绍多环境配置 & Mach-O与链接器 & Symbol 一、多环境配置...

  • iOS进阶01:多环境配置

    Project: 包含了项目所有的代码,资源文件,所有信息。 Target:对指定代码和资源文件的具体构建方式。 ...

  • OS开发进阶:一、多环境配置

    实际使用场景: debug模式和release模式的一些配置不一样,比如开发环境访问的后台服务器和线上版本访问的服...

  • webpack4 构建vue多页工程

    webpack4 构建vue多页工程 多页应用开发环境配置 构建开发环境的配置,需要使用到webpack-dev-...

  • pyera开发环境配置

    pyera引擎的开发环境非常灵活,可以根据不同的功能需求等级进行选择。分为两种配置,和两个进阶功能: 简易配置环境...

  • vue3.0 多环境配置

    最常见的多环境配置,就是开发环境配置,和生产环境配置(也就是上线的配置),很多情况下我们开发环境下的域名,和一些配...

  • vue-cli配置多环境变量

    配置多环境打包 如有开发环境、测试环境、生产环境 1.开发环境,创建.env.development文件 2.测试...

  • xcode多环境xcode配置以便fastlane打包

    多环境xcode配置 需求 随意切换开发环境,不影响代码,自动打包方便。 开发环境 DevDebug 成都测试环境...

  • iOS 开发测试正式环境快速部署

    ios-实现项目在开发、测试、正式环境快速部署使用iOS APP的Build Configuration区分开发和...

网友评论

    本文标题:iOS-开发进阶01:多环境配置

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