当前位置: 首页 > news >正文

Xcode多种Build Configuration配置使用

Build Configuration?

Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。


pic1.png

使用场景

我自己碰到的使用场景是,我司的域名有3套:

  1. 针对开发时的域名
  2. 针对预上线时的域名
  3. 针对上线时对外公开的域名

这个时候,就会有多套域名,全部加起来可能有15个左右。每次打包时,就会特别混乱。(注释掉现在使用的域名,打开原本注释掉的那部分,出差错的可能蛮高的,而且不利于阅读)

这个时候,我们就使用它来针对3个环境下不同域名做配置。

配置Build Configuration

1. 添加Configuration

这里我们添加DEVELOP、BETA、保留原有的(release)。这里我们选择直接duplicatte Debug的配置,因为Release的不能做断点调试。


pic2.png

2. 查看Configuration

添加完第1步的Configuration之后,在Edit Scheme里就会看到新添加的配置项


pic3.png

3. 更改Preprocessor Macros

第1步里我们直接复制了Debug的配置项,那这里的值就会有问题,需要自己设置。


pic4.png

4. 在程序里配置对应的Configuration下不同域名


pic5.png

5. 测试

运行程序,修改Scheme下不同的Configuration,就能得到不同的值,那结果就是正确的了。


基于以上的实验,app还可以在不同环境下配置不同的AppIcon和AppName

AppIcon

使用Asset Catalog,分别给三种环境下配置3个名字

  • AppIcon
  • AppIconDEVELOP
  • AppIconBETA

然后去Target - Build Settings里搜索Asset Catalog App Icon Set Name这一项


pic6.png

pic7.png

App Name

Target - Build Settings里点+号,添加一个User-Defined Setting

比如我们请一个叫APP_DISPLAY_NAME的key值,下面BETA叫BETA,DEVELOP叫DEVELOP, Release还是用系统原配置。

进到Target - Info里,修改Bundle name为$(APP_DISPLAY_NAME)


pic8.png

pic9.png

pic10.png

运行结果


iconDev.png

iconBeta.png

iconRelease.png

打包配置

这几天我们做了一件很蠢的事,把开发用的环境打包发给了Apple。
为了弥补这件事,顺便规范以后的打包问题,于是做了一些配置上的补救。
查了下Apple的文档,原来可以配置,我将Release环境以外的Skip Install配置成NO,就不会Archive出ipa了。


 
转自:http://www.jianshu.com/p/51a2bbe877aa
 

转载于:https://www.cnblogs.com/6duxz/p/7121237.html

相关文章:

  • 统计分析方法分类
  • oracle sql*plus
  • 多个选项选中某一个的效果(用到siblings()方法)
  • 安装centos7最小化安装
  • sql*plus spool
  • oracle体系架构
  • 富文本 文字图片点击,(TextView)
  • 好书分享 ——《深度工作》
  • Linux grep命令
  • oracle with
  • 图片选择器ImageEditContainer
  • ETL基本概念
  • python学习笔记5-python的函数
  • oracle物化视图(materialized view)
  • 绝世好题bzoj4300
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Promise面试题,控制异步流程
  • React的组件模式
  • Redis 中的布隆过滤器
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue UI框架库开发介绍
  • 编写符合Python风格的对象
  • 成为一名优秀的Developer的书单
  • 力扣(LeetCode)56
  • 全栈开发——Linux
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 优化 Vue 项目编译文件大小
  • 阿里云API、SDK和CLI应用实践方案
  • 阿里云重庆大学大数据训练营落地分享
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (1) caustics\
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (编译到47%失败)to be deleted
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***检测工具之RKHunter AIDE
  • .chm格式文件如何阅读
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 设置默认首页
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET构架之我见
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net流程开发平台的一些难点(1)
  • ;号自动换行
  • @media screen 针对不同移动设备
  • @RequestMapping用法详解
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法