8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

想象一个场景,我们正在开发一款支付系统,这个支付系统同时支持有Web版和原生的iOS APP版本。

这个支付系统有三个环境:dev: 调用支付的开发环境接口,并不会真的扣钱。

qa: 调用支付的测试环境接口,假的测试账户中的余额会发生变化。

production: 调用产品环境中的支付接口,账户余额和钱会真实发生变化。

对于 Web 版的系统,我可以在浏览器中打开三个窗口,然后依次输入不同环境下的域名: www.dev.pay-example.com,www.qa.pay-example.com,www.prod.pay-example.com 来分别进行测试。

对于 iOS APP 呢?我们想要的其实是类似的,打开一台手机,我们可以同时安装三个APP:PayExampleDev,PayExampleQA,PayExample 然后可以切换APP来使用它们。

那么怎样通过一个 iOS 工程打包出三个不同的 APP 呢?方法很多,本文我们就来介绍通过 Xcode Configuration 和 Scheme 的配置方式来实现。新建 Group,命名为:Configuration

在 Configuration 中新建不同环境下的 Configuration Settings file

具体步骤如下图:

配置项目的 Configuration在不同的 Configuration file 中,配置需要的键值对,用于在项目中引用,具体配置,请参考 Demo源码

Project -> Info -> Configurations

将 Configurations 配置为 Dev、QA、Prod,并配置对应的 Configuration File

具体步骤如下图:

创建 scheme创建 scheme (PayExampleDev、PayExampleQA、PayExampleProd),供不同环境使用

Edit Scheme -> Step -> Info -> Build Configuration,配置对应的 Build Configuration 为 Dev、QA、Prod

在项目配置中引用 xcconfig 中定义的变量PayExample target -> General -> Display Name

配置 Display Name 为 $(PE_BUNDLE_NAME)

具体步骤如下图:

在某一个 Scheme 上执行某操作时,在此 Scheme 的此步骤上定义的 BuildConfig 就会生效。

比如:

用于打包 QA 环境的scheme PayExampleQA,其 Build 配置的 Build Configuration 为 QA

QA 在 Configuration 中配置的 config 文件为:qa.xcconfig

项目中,APP 的 Display Name 的值为:$(PE_BUNDLE_NAME)

qa.xcconfig 中 PE_BUNDLE_NAME 的值为 PayExampleQA

如此 PayExampleQA scheme 在打包后,显示的APP名称为 PayExampleQA

Setup bundle identifier

iOS 中是通过 bundle identifier 来标识不同的应用的。也就是说,想要通过一份代码同时编译出三个应用安装到设备中,我们需要在 dev.xcconfig, qa.xcconfig, prod.xcconfig 中分别定义 BUNDLE_IDENTIFIER ,并在项目配置中引用它。

当我们直接在配置中定义 PE_BUNDLE_ID ,并在项目配置中引用它时(Xcode10.1 (10B61)),会发现配置无效(如下图)

当查看 info.plist 时,可以发现 Bundle identifier 的 value 是 $(PRODUCT_BUNDLE_IDENTIFIER)。 我们可以在 Project -> Build Settings -> Product Bundle Identifier 中配置它的值为 $(PE_BUNDLE_ID)。具体操作如下图:

最终效果

完成上述配置以后,我们可以在不同 Scheme 下执行 run 命令将 APP 安装到模拟器中,查看效果:

What’s More

如果你需要在 Jenkins 或者 Travis 中搭建 pipeline,此配置同样适用。

当我们用脚本来打包 APP 时,会执行如下命令:1

2

3

4

5xcodebuild archive -workspace 项目名称.xcworkspace

-scheme scheme名称

-archivePath archive包存储路径

CODE_SIGN_IDENTITY=证书

PROVISIONING_PROFILE=描述文件UUID

通过指定不同的 scheme 即可管理不同环境下的项目配置。

构建 pipeline 将会在后续文章中详细介绍,敬请期待!

Linux配置scheme环境,用 Xcode Configuration 和 Scheme 配置项目环境相关推荐

  1. Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三)

    Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三) 目录 Jenkins 之 单节点 搭建自动化部署项目环境 与 实战测试 (三) Jenkins 服务器 环境 ...

  2. kali Linux宿主代理、v2ray代理、proxychain4代理和抓包环境Charles、burp的安装配置

    目录 1.v2rayN内网配置 2.宿主代理配置 2.1配置proxychains4代理 2.2配置火狐浏览器代理 3.v2ray安装配置和使用 3.1 修改国内源 3.2 v2ray安装配置 3.3 ...

  3. iOS XCode Configuration、Target、Scheme的区别

    Configuration configuration定义了product编译的环境,以及一些配置.configuration通过关联xcconfig文件可以定义预处理阶段的宏,这些宏定义比较早,所以 ...

  4. Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)

    之前的博文分享了下载安装[VS code]的详细教程, 有需要速戳–>Linux环境中Visual Studio Code 安装配置及其卸载(详细教程) 本篇博文分享本人初次使用[VS code ...

  5. Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)

    两篇相关博文: 在VMware15中创建虚拟机安装ubuntu系统(超详细教程) Linux环境编译运行C/C++语言程序----配置gcc.g++(详细教程) 此篇分享我在linux环境下安装VS ...

  6. linux查看python环境变量_Linux中添加PYTHONPATH配置anaconda环境变量方法

    因为最近开发多智能体模型需要把自己写的环境打包import,环境是统一的,如果不加入环境变量,每次测一个算法都要把包作为附属脚本和算法脚本放一起非常麻烦.所以就想把这些写的环境加入到python的环境 ...

  7. Linux系统创建桌面快捷方式,安装idea,配置idea环境

    一.下载Linux版IDEA 使用浏览器打开IDEA官网的链接:https://www.jetbrains.com/idea/或https://www.jetbrains.com/idea/downl ...

  8. Linux环境下安装 JDK1.8 以及配置环境变量

    Linux环境下使用指令下载JDK wget https://download.oracle.com/otn/java/jdk/8u291-b10/d7fc238d0cbf4b0dac67be8458 ...

  9. linux环境下redis5.0的安装配置

    文章目录 一.Redis介绍: 二.安装Redis 2.1. 下载 解压 进入文件夹 然后 编译 2.2. 启动Redis 2.2.1. 指定配置文件启动redis 2.2.2. 配置redis后台启 ...

最新文章

  1. oracle11g dataguard windows,Oracle11g 搭建DataGuard(笔记)
  2. html5调用手机摄像头,实现拍照上传功能
  3. tensorflow从入门到精通100讲(二)-IRIS数据集应用实战
  4. Linux 中的驱动开发的初学者体会
  5. @Autowired注解警告Field injection is not recommended
  6. Java 字符串 String 与整数型 int 之间的转换
  7. vue根据不同权限显示图片_vue多级权限组件的实现
  8. JDBC实现从Hive抽取数据导入Oracle
  9. 山师计算机学硕分数线,2020山东师范大学考研复试分数线已公布
  10. iis7连接mysql_windows2008中正确使用IIS7配置PHP与MySQL
  11. 学生教育云平台登录入口_学校安全教育平台登录入口
  12. 易语言_酷Q机器人插件_01
  13. BROTHER 废墨清零教学
  14. 企业业务逻辑常见风险
  15. 银联扫码支付java,银联商务扫码支付-被扫业务
  16. 携程实时大数据平台实践分享
  17. ASM故障组offline
  18. PHP给微信二维码 添加背景和昵称 ,微信带参数海报跨坑记录。
  19. 618大促:手机品牌“神仙打架”,高端市场“谁主沉浮”?
  20. ipv6访问文件服务器,开启IPv6,让你的局域网可以使用IPV6进行共享文件夹的访问...

热门文章

  1. 跨平台低延迟的RTMP/RTSP直播播放器设计实现
  2. http请求POST方式发送获得返回值
  3. call 和 apply 的使用
  4. Java:File.separator作用相当于 ‘ \ ‘
  5. linux远程连接最大数是多少,Linux Shell 脚本限制ssh最大用户登录数
  6. python使用loaddata_Python中LOADDATAINFILE语句导入数据(txt)进入MySQL的一些注意事项...
  7. linux messages 时间错乱_BATJ 常考的 21 条 Linux 命令,速度收藏!
  8. html页面加载时执行ajax请求,页面加载完成之后,ajax远程调用的数据才显示出来。有没有可能使ajax部分的程序执行完了,页面再加载完成...
  9. 强健程序员体魄————减脂原理
  10. LeetCode算法入门- Compare Version Numbers -day14