iOS app打包剔除多余文件

本文介绍了在iOS开发中如何避免Debug代码和资源污染Release版App。通过EXCLUDED_SOURCE_FILE_NAMES设置,可以排除特定环境下包含特定关键字的文件。同时,对于使用Cocoapods且需要在Release环境中保留Debug功能的情况,可以通过Ruby脚本动态设置宏IS_BETA和EXCLUDED_SOURCE_FILE_NAMES,确保在不同环境中正确地包含或忽略Debug相关文件。
摘要由CSDN通过智能技术生成

应用场景:在开发app过程中,你肯定需要有测试环境,而测试环境和线上环境的切换如果你是根据修改代码来实现那你就太low了。这时候你会实现一个debug功能模块,不但你能进行环境切换,产品经理,测试员同样能用这功能。而随着产品逐渐成熟,需要的debug功能也会越来越多,如:ABTest切换,用户登录登出,指定页面跳转,日志查看等功能。从另一个方面说你的debug模块代码会越来越多。那么,怎样让debug代码不污染线上app呢?

一般,你可能会想到的是我只需要在每个类或方法上添加上宏的判断就行了,在debug下才会定义某个类或方法,如下:

#if DEBUG
@interface DebugA : UIViewController 
// 方法...
@end
#endif

#if DEBUG
@implementation DebugA
// 方法实现...
@end
#endif

#if DEBUG
DebugA *a = [[DebugA alloc] init] ;
// 方法调用...
#endif

上面的方法,看起来是可行的。它保证了只有在 Debug 环境下,才会有 DebugA 类的定义和实现,也保证了只在 Debug 环境下才对 DebugA 进行实例化。

问题: 虽然在 Release 下类和方法是没定义了,但是文件在打包的时候还是会被打包进app, 另外,类的定义和实现都用宏包起来,从一定程度上对代码造成了污染; 另一个问题,如果在实现过程中涉及到图片或者xib的使用,这些文件在 Release 下即使不显示也不使用,但是已经被打包进 app 了。怎么杜绝这两个问题呢?

EXCLUDED_SOURCE_FILE_NAMES 能很好的帮你解决这个问题。从key的名称可以大概知道,它是用来 通过文件名排除资源文件 的。
你只需要在相应的 Target 下的 Build Settings 中添加 User-Defined Setting,然后添加 EXCLUDED_SOURCE_FILE_NAMES,并在不同编译配置下进行文件名的忽略(支持正则匹配)即可。

添加User-Defined Setting

添加EXCLUDED_SOURCE_FILE_NAMES  key

上图,在 Release 下通过匹配文件名存在 Debug 字样的文件,这样,在 Release 下就会将文件名包含 Debug 的文件忽略了。所以,在定义 debug 功能模块的类和方法上都不需要通过 #if Debug #endif 来污染代码了,同样的,debug 的资源文件也不会被打包进 Release 下的 app 内了。

等等,问题解决了吗

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值