iOS多target的一种使用场景及引入脚本对比target差异

关于调试的target


优化 记录贴 说明贴 2018.4.23


起因

项目包含多种环境,默认的debug,release和通过bulid configuration配置的FAT(测试环境),UAT(预发布环境),每种环境都需要打包测试.
由于项目使用的是企业版开发者账号,而不方便统计全部测试人员的UDID,所以每次提交代码前需要手动更改为release证书以便Jenkins上的打出的包适用于所有手机.但日常调试工作需要develop证书,所以在代码入库时如果忘记更改会导致编译失败问题,给日常开发带来一些麻烦.

解决

为解此问题,添加一专门用于调试的target,新的target仅用于调试,全部配置为develop证书,不在更改原来默认的target,可以减少一些使用上的麻烦。以下是几点使用注意和优化的说明。

说明

下图中的EbikeMaintainDev为原"EbikeMaintain"target通过duplicate复制出来的,将EbikeMaintainDev都配置成develop证书,调试工作在EbikeMaintainDev中进行.不影响原target的打包操作.


iOS多target的一种使用场景及引入脚本对比target差异_第1张图片
20180504111810.png-13.4kB

使用注意

1.新建一个类要注意勾选两个target

iOS多target的一种使用场景及引入脚本对比target差异_第2张图片
new.png-41.8kB

2.假如新建类文件时没有勾选另一个target,如果没有调用该类的方法,编译期间并不会有错误提示,造成很多不必要的麻烦


3.为了避免由于疏漏导致不必要的调试问题,引入python脚本,让问题在编译期就可以暴露出来

  • 脚本添加,在下图位置添加 Run Script


    iOS多target的一种使用场景及引入脚本对比target差异_第3张图片
    20180504113408.png-20.6kB
  • 添加如下命令,执行添加在工程主目录下的脚本,用于编译时检查两个target的不同,排查出没有在新的target中勾选索引的类

iOS多target的一种使用场景及引入脚本对比target差异_第4张图片
20180504113527.png-27.2kB

命令: python diffTargets.py EbikeMaintain EbikeMaintainDev ./EbikeMaintain.xcodeproj/project.pbxproj

  • 下图为添加脚本后,类文件只在一个target中添加的报错情况


    iOS多target的一种使用场景及引入脚本对比target差异_第5张图片
    error.png-63kB

解决方案:
找到该类文件,在.m文件类的右侧的工具栏中勾选上另一个target

iOS多target的一种使用场景及引入脚本对比target差异_第6张图片
解决.png-57.7kB

:脚本添加在工程主目录文件夹下,执行命令在Build Phases中的Run Script中


其他: manage schemes 可以调换位置,方便调试

iOS多target的一种使用场景及引入脚本对比target差异_第7张图片
manage schemes.png-82.3kB

最后

脚本源码可在网上自行搜索,如有需要可私信我.
关于配置多环境Build Configuration和Target等具体使用及场景,可参考冰霜大神的文章
https://www.jianshu.com/p/83b6e781eb51

你可能感兴趣的:(iOS多target的一种使用场景及引入脚本对比target差异)