iOS马甲包管理

一个工程创建多个Targets通过宏定义来管理马甲包

1.Targets选中母包右键Duplicate 然后选择DuplicateOnly拷贝 然后点击新建的Targets进行修改名字

2.快捷键command+option+r 选择Manage Schemes进去后勾选新建的Targets并且修改名字

3.修改对应的plist文件进行名字的修改与app名字的修改

4.修改Bundle Identifier

5.新建Assets管理对应马甲包的图片库 以后新建文件时需要匹配对应的Targets,比如这边的新建2个Targets都勾选后那马甲包与母包都会读取这个文件里的内容,如想单独维护则注意母包所创建文件夹的Targets勾选事项!

6.创建马甲包的Icons与Launch images 记得在Targets中勾选

7.重点:新建对应宏管理马甲包  在preprocessor macros中母包和马甲包里各定义一个Debug和Release的宏定义用来区分项目

8.创建.h文件 比如需要区分图片时该怎么区分母包与马甲包的各种情况呢?

打个比方母包采用DefineColor.h来管理母包的颜色 DefineColorSpeed.h来管理马甲包的颜色,直接在.pch中判断引入哪个即可。

但要注意的事项是,2个管理颜色的.h文件必须要有相同的宏,不然编译会报错。

比如DefineColor.h有个宏 #define COLOR_FF7700 [UIColor colorWithHexString:@"FF7700"]  那么DefineColorSpeed.h中也必须要有该宏定义,马甲包的颜色管理.h文件可以根据UI的颜色替换模式进行更改色块,如母包 FF7700 马甲包为 E45038 时 修改马甲包的宏定义颜色即可 #define COLOR_FF7700 [UIColor colorWithHexString:@"E45038”]

如果遇到有些色块或代码不好区分 可以通过宏定义来区分

#if WalletTBase

    signView.backgroundColor=KOrangeCheeseColor;

#elif WalletTSpeed

    signView.backgroundColor = KOrangeCheeseColorSpeed;

#endif


9.如果遇到某个页面改动非常大 马甲包与母包控制器必须分开时先找到该控制器 然后再建立一个文件夹来区分 如这边建立了cs文件夹,然后再把那些控制器拷贝到cs文件夹里,再手动添加

添加对应文件即可   这种方式区分也需要注意 母包与马甲包的.h方法都必须拥有 否则编译会报错

因为单纯swift工程不支持这种在preprocessor macros中设置的宏定义,只能通过混编来解决!

别人的解说方式:

按照swift添加预编译宏的方式,在Preprocessor Macros中添加一个宏,然后在Other Swift Flags中添加-D,但是今天新建了一个工程之后发现代码中竟然无法使用这个宏。查了很多资料都没有找到确切的解释以及解决方案,一同事试了一上午,终于找到原因,这个宏必须是swift和OC混编才可以生效。也就是说必须得加入Project-Bridging-Header.h文件才可以。

以前看文档一直没理解swift不支持宏定义的说法,这次加了宏不生效才深刻理解了这句话,swift确实不支持,但是可以混编OC,把OC中的宏解释为全局变量来使用。所以说还是得好好的思考官方文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前段时间看新闻有个杭州小伙子,两年时间在全国各地跑了40次马拉松,很厉害!有记者采访他为什么这么爱马拉松时,他简直...
    管理顾问王荣增阅读 1,568评论 5 24
  • 总是不知道该起一个什么样的标题,就用数字代替吧,好久没有写些什么,脑力退化了。 其实我挺幸福的,平平淡淡的生活,有...
    大卢棒阅读 182评论 0 0
  • 读书有道,诗书传家 吾儿和澄: 自汝出生,吾无日不忧,汝自幼心性激荡,顽劣异常,东游西走,摧花棘木,斗狗疯鸡,不亦...
    许多多多多阅读 1,039评论 1 0