首页 > 其他分享 >iOS项目多环境配置

iOS项目多环境配置

时间:2024-08-28 17:06:17浏览次数:8  
标签:target 新建 iOS 配置 环境 xcconfig Scheme

iOS项目因为真机调试需要苹果开发证书,不同编译环境证书也不一样,我们遇到很多时候上线App Store时与开发测试配置不一样,需要频繁手动修改,那么我们怎样优雅便捷的去做这个事情呢?
三种常见的多环境配置方式,可以结合使用。
首先清楚一个概念:
Project:包含了项目所有代码,资源文件,所有信息;
Target:对指定代码和资源文件的具体构建方式;
Scheme:对指定Target的环境配置。
意思就是,Project需要指定Target编译构建,可以有多个不同的target,每个target可以有多个Scheme,比如Debug、Release、ADHoc等,选对应的配置进行打包。

一、第一种方式:多Target
1、新建target,打开项目,左边栏选中Project->>选中Targets下面的target,右键Duplicate拷贝一份target,会生成一个target和一个info.plist文件

2、对新建的target进行配置,比如:不同的appIcon、bundleID、名称、宏定义、cocoapods等


多个target,独立配置资源和代码比较方便。

二、第二种方式:Scheme
1、新建Configurations配置:
左边栏选中Project->>选中Project,Configurations下面+,新建一个环境,图片示例我新建了一个名为ADHoc的环境

2、新建Scheme,图片示例我新建了一个名为ADHoc的Scheme


3、可以根据Configurations环境配置不同证书、bundleID、分开各种配置等等操作

4、配置Scheme,将Scheme与环境关联起来,Xcode左上角Edit Scheme去配置


这样就可以根据不同Scheme运行不同配置项目

三、第三种方式:利用.xcconfig配置文件
1、新建.xcconfig文件,Xcode新建文件,选中macOS,搜索config,选中ConfiguationSettings File,新建配置文件

2、配置.xcconfig文件,Configurations下各环境对应选择.xcconfig文件

3、配置后,怎样xcconfig定义变量及取值?
两种方式,一种通过info.plist配置取值


代码中使用:

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

宏定义配置

编译后,Xcode,buildsettings Preprosser Macros会生成对应的变量

项目中直接可以使用
NSLog(@"%s",URL_STRING);

三种方式都可以多环境配置,可以结合使用。

现在很多公司为方便统一管理苹果账户,专门负责管理账户的,开发是拿不到公司账号,不能开发调试。那么开发iOS应用时,必须分为App Store版本和开发测试版本,此时就需要多环境配置项目了。
基于这个应用场景,我们来结合上述方法配置多环境,方便打包测试和上线。
我的配置是,利用多target和.xcconfig文件结合使用,多target可以使用不同pods库、infoplist,可以进行独立配置。
网络环境可以利用本地存储一个值,判断需要配置哪种环境域名,方便测试切换网络环境。
利用脚本打包,可以分为App Store打包脚本、测试打包脚本,测试脚本直接上传蒲公英等测试平台,让测试直接下载进行测试。

 参考来源:博客  开发进阶01

标签:target,新建,iOS,配置,环境,xcconfig,Scheme
From: https://www.cnblogs.com/GJ-ios/p/18385131

相关文章

  • Python虚拟环境介绍
    本篇是Python系列教程第4篇,更多内容敬请访问我的Python合集1什么是虚拟环境Python的虚拟环境一般存在于项目的根目录,其作用其实和Vue项目的node_modules文件夹差不多,存放一些本项目的依赖包。与node_modules不同的是node_modules只是用来存放外部依赖包,而Python虚拟环......
  • STM32 GPIO 寄存器的配置
    32位配置寄存器:GPIOx_CRL,GPIOx_CRH32位数据寄存器:GPIOx_IDR,GPIOx_ODR32位置位/复位寄存器:GPIOx_BSRR16位复位寄存器:GPIOx_BRR32位锁定寄存器:GPIOx_LCKRGPIO寄存器详解CRL和CRH控制IO口,是四个位控制一个口,所以要两个32位的来控制16个口CRL32位端口配置低寄存器(GPIOx_......
  • 【阅己书城】配置git免密登录
    1、配置用户名gitconfig--globaluser.name"username"//(名字,随意写)2、配置邮箱gitconfig--globaluser.email"[email protected]"//注册账号时使用的邮箱3、配置ssh免密登录ssh-keygen-trsa-C"[email protected]"三次回车后生成了密钥,也可以查看密钥cat~/.ssh/id......
  • 使用Hardhat的forking功能在本地模拟EVM链真实环境
    HardhatNetwork可以复制主网区块链状态数据到本地环境,包括所有余额和部署的合约。称为forkingmainnet,可以使得本地测试模拟主网环境,但不用gas,所做的交易也不会真的发生在主网。不止以太坊主网,其他兼容EVM的区块链都可以fork。我们来看一下如何使用这个重要功能。如下例子,是如何......
  • 【阅己书城】Maven setting.xml配置阿里云加速,JDK8编译
    在mavensetting.xml配置文件配置1、配置阿里云镜像<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexusaliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</......
  • SpringBoot配置动态数据源 原理+实战
    若没空探究原理可直接跳转到“实现方式:注解+切面”目录数据源切换方法Spring对数据源的管理类似于策略模式,不懂策略模式也没关系,其实就是有一个全局的键值对,类型是Map<String,DataSource>。当JDBC操作数据库之时,会根据不同的key值选择不同的数据源。而这个key值可以放到方法的......
  • SpringBoot配置多个kafka配置
    引入依赖<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.14</version></dependency>yml配置有几个就配置几个......
  • Java后端微服务架构下的配置动态刷新:Spring Cloud Bus
    Java后端微服务架构下的配置动态刷新:SpringCloudBus大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务的配置管理是一个挑战,尤其是当配置需要动态更新时。SpringCloudBus提供了一种基于消息总线的配置刷新机制,允许配置更改在服务......
  • Java后端分布式系统的服务监控:Zabbix与Nagios
    Java后端分布式系统的服务监控:Zabbix与Nagios大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在分布式系统中,服务监控是确保系统稳定性和可靠性的重要手段。Zabbix和Nagios是两款广泛使用的开源监控系统,它们提供了网络和服务器监控的功能。服务监控......
  • iOS面试资料集合
    本文主要收集了一些iOS面试资料,包含面试课程(5门)、面试题(158题)、面试书籍(3本)。希望对大家有用。一、课程集合1、解决面试摩擦透析iOS的Runtime机制这门课程主要深入讲解iOS的Runtime机制,包括Objective-C的消息发送、动态方法解析、类和对象的内部结构等内容。通过系统地解析R......