iOS 系统认知 debug distribution release 和 #ifdef DEBUG

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:12   966   0

debug:调试模式 有调试信息 线下

release: 无调试信息 经过了编译优化 发布 给用户使用的 线上模式

一般 工程项目 都是自带 上述两种配置结构

还有出现

distribution: 一般都没有这个选项,网上给的一种说法是"是使用了企业证书的编译版本。虽然这不是特别要求非得如此,但是许多参与企业版证书发布的程序员都遵守了这么一个协议"

其实,我们也可以自定一个这个结构,(这里我创建的是和Release一样的一个Distribution 当且仅当内测的时候用可选用这个)

(1)第一步

如图:菜单栏 Editor - Add Configuration - 在 project 里面的 info 的 Configurations 里面 点 "+"号 可以创建一个你的项目需要的结构

(2)第二步

创建一个新的结构是在复制已存在的debug 和 release结构的基础之上,所以还要处理一次全局宏的问题

习惯吧 我这里 把debug模式叫线下 把release distribution 叫线上模式 release 更加严格的讲 应该叫"上线模式 上传到AppStore的模式"

很明显 在debug的情况 执行打印日志 其他模式不打印(release 和 Distribution)

//DEBUG  模式下打印日志,当前行  
#ifdef DEBUG  
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);  //debug
#else  
#   define DLog(...)  //非debug
#endif  

优势:(1)大量的日志输出也会耗费app本身性能 所以...

(2)过多的日志输出在苹果官方测试评估过程中也会发现 然后退回 告诉你 减少不必要的输出...

同理有好多类似的用法

 #ifdef DEBUG  
 #    NSString * const BASIC_URL=@"http://xxxx/test";  //debug
 #else  
 #   NSString * const BASIC_URL=@"http://xxxx/production_test";  //其他
 #endif  

模式切换:

配置 edit scheme

(1)如果 只是模拟器和真机测试 run模式下面 build configuration 配置选择 debug 是 切换到线下, 会打印 DLog 会使用 http://xxxx/test,如果选择 release 是切换到线上,不会打印 DLog 会使用 http://xxxx/production_test ... ...

(2)如果是 打包,在调整基本的 开发者 生产者 证书 和 配置文件之外 调控Archive 归档来配置 打出的包 是线上还是线下

   线下 : Archive 选择 build configuration 配置 debug

线上 : distribution / release

上线 : release (上传到appstore 一定要选择这个选项 !!!! 忘记哪个 也不能忘记这个,总不希望发布一个线下包给用户吧... )

转载于:https://www.cnblogs.com/someonelikeyou/p/5776300.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP