IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 2021-11-15 -> 正文阅读

[开发工具]2021-11-15

面临的问题

我们在开发过程中,会遇到不同的环境,dev的,uat的,prod的等等,不同环境,会有不同的domain,也有不同的配置,像dev环境会有一些log,埋点辅助开发,一旦到prod环境,就不再有开发log;再比如不同版本,app icon不同啊; 不同版本的提示不同信息啊。我们需要构建不同版本。但如何在Xcode中有效率的管理所有构建版本,而且不改变原有的代码呢?

解决方案

  1. 首先,讲一讲我之前用的笨法子: 手动修改获取domain name的方法,通过build setting里的配置项,将当前环境调成debug 模式,然后再连调,打包,给测试测。
    问题: 手动改code,还有有约定俗成的切换方式,分几步,都改哪些,每个人都要关注这些事情,在local办公区还算说得过去,如果是global办公环境,那就真的口口相传吧~~~
  2. 当然,你可以通过创建不同targets,不同的target使用对应的info.plist,可以借此进行不同配置的设置
  3. 还有可以使用Bundle Identifiers來实现,定义不同的preprocessor macros控制各個代码块的编译条件
    可以参考: How to Use Xcode Targets to Manage Development and Production Builds
  4. 重头戏 – 简单更改scheme来切换不同版本的配置
    将你的构建配置设定放到.xcconfig文件中,在对应的info文件内引用它,通过切换scheme来换不同配置。将这些配置(build configuration)设定放在项目里,特别方便配置管理了(configuration management)

如何操作

话不多说,直接上图

建立Build Configuration

  1. 首先,选中你的project,找到info,看到Configurations底下有2个选项,这就是2个不同的版本。
  2. 你可以选底下的“+”,来再添加一个你需要的版本,比如:Uat,我们这里选择Duplicate ”Debug" Configuration,因为debug配置中删除我们不需要的东西,比release配置要容易的多。
    请添加图片描述
  3. 添加之后就是如下图所示,你有三个级别的配置。
    你也可以修改名字,比如将release修改称Prod请添加图片描述

使用Xcode配置文件(.xcconfig)

我们使用Xcode配置文件(.xcconfig)取代conditional compilation blocks,来管理不同配置(token,domainURL等等)
.xcconfig其实就是一个基于key/value的文件,像dictionary. 你可以通过key/value对不同的配置简单设置参数.

  1. 选导航栏里,Xcode 旁边的File -> New -> File… (or 快捷键:Command + N) ,调出创建新文件窗口
  2. 在如下框里,搜索configuration -> 选中“Configuration Settings File” -> Next
    请添加图片描述
  3. 改名为你想要的配置文件名,比如:“Debug”,“Uat”,“Prod”,跟不同版本配置保持一致.
    并确保targets里全部都是未选状态,因为我们不希望将其包含在程序的bundle中.
    请添加图片描述
  4. 创建好不同配置文件之后,回到Project-> Info -> Configurations 里,分别在不同的版本下,选不同的配置
    请添加图片描述

更改配置信息(Changing the Build Information)

基本配置搞定,接下来改配置文件里的内容了。
比如你想改:应用名称,应用版本,bundle identifier以及每个版本的bundle version等等,你可以这样编辑每个.xcconfig文件。
Debug.xcconfig:


SU_APP_NAME = SwiftUI-SwiftUI Debug
SU_APP_VERSION = 0.1
SU_APP_BUNDLE_ID = com.apple.SwiftUI-SwiftUIDebug

Uat.xcconfig:

SU_APP_NAME = SwiftUI-SwiftUI Uat
SU_APP_VERSION = 0.2
SU_APP_BUNDLE_ID = com.apple.SwiftUI-SwiftUIUat

Release.xcconfig:

SU_APP_NAME = SwiftUI-SwiftUI Prod
SU_APP_VERSION = 0.3
SU_APP_BUNDLE_ID = com.apple.SwiftUI-SwiftUIProd

你可以在project settings,info.plist和entitlement files中使用你的配置变量(configuration variables)。这里,我们在info.plist中使用它改变app名称、app版本和bundle identifier,如下所示:请添加图片描述

更改App Icon

通过**.xcconfig** , 你现在可以轻松配置不同版本的app icon,只是这变量将在Build settings中使用。
Debug.xcconfig:

SU_APP_ICON = AppIconDebug

Uat.xcconfig:

SU_APP_ICON = AppIconUat

Prod.xcconfig:

SU_APP_ICON = AppIconProd

完成后,切換到Build Settings,将AppIcon替换为变量**${SU_APP_ICON}**:
请添加图片描述
最后,在“Assets.xcassets”中創建几套新的iOS App Icon,并按顺序重命名它们。
请添加图片描述

通过配置文件存取变量

  1. 在.xcconfig文件里存储变量
    Debug.xcconfig:
BACKEND_URL = http:\/\/api.baidu.com/development
CONSUMER_KEY = ck_a57e4fa2e14c12ae3f400371cf2951ec3dea5_dev
CONSUMER_SECRET = cs_c847caa35ce1041e9c69d239141f13f63bb22b_dev

Uat.xcconfig:

BACKEND_URL = http:\/\/api.baidu.com/Uat
CONSUMER_KEY = ck_a57e4fa2e14c12f400371cf2951ec3dea5_uat
CONSUMER_SECRET = cs_c847caa35ce1041e9c69d239141f13f63bb22b_uat

Prod.xcconfig:

BACKEND_URL = http:\/\/api.baidu.com/
CONSUMER_KEY = ck_a57e4fa2e14c12f400371cf2951ec3dea5
CONSUMER_SECRET = cs_c847caa35ce1041e9c69d239141f1f63bb22b
  1. 然后,将这些变量添加到Info.plist:
    请添加图片描述
  2. 你就可以使用下面的代码在运行时从plist文件读取所需的值:
func infoForKey(_ key: String) -> String? {
        return (Bundle.main.infoDictionary?[key] as? String)?
            .replacingOccurrences(of: "\\", with: "")
 }
 

代码很简单,我们正在访问Main Bundle来获取我们想要的信息,如果返回的值是一个URL,我们从字符中刪除所有反斜杠(backslashes).

在不同的配置文件之间切换

最后就是使用,要想切换不同版本(build configuration),选scheme -> Edit Scheme(or 按住Option + 顶部的scheme) 即可更改scheme. 请添加图片描述
请添加图片描述

总结

好啦,你可以轻松管理不同的配置变量了,欢迎讨论和指正

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:57:47  更:2021-11-17 12:59:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:00:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码