美文网首页iOS开发好文iOS开发iOS开发技巧
如何在iOS项目中创建多个target?

如何在iOS项目中创建多个target?

作者: Colin_狂奔的蚂蚁 | 来源:发表于2016-04-23 16:02 被阅读7238次

现在的项目里面创建了多个target(分别是:生产环境、测试环境、开发环境),每个target对应一个环境,并配置不同的info.plist文件,这样做的好处是不用开发人员每次都要去手动开启/注释某些代码去发布,而是先配置好,到时候直接切换target就可以打包上线了,是不是很期待呢?

创建不同的target

直接贴图

点击完成后,将名称改为projectName-dev和projectName-test,默认的projectName当生产环境。

⚠️:创建不同的target时,有个细节需要注意,那就是你的项目如果是xcworkspace时,先pod install后再去按照贴图上面的操作去完成,否则,先创建再pod install,projectName-dev和projectName-test就会出现报错,报错原因是pod的配置信息没完成或文件路径没索引到(我之前就遇到过,试了好多次,还好经过测试跳过了这个坑,😄)。

改名称

targets分别改成:<#projectName#>、<#projectName#>-dev、<#projectName#>-test

scheme也分别改成:<#projectName#>、<#projectName#>-dev、<#projectName#>-test

info.plist分别改成:info.plist、<#projectName#>-dev-info.plist、<#projectName#>-test-info.plist

⚠️:

1、这里的三个环境都是一一对应的。

2、.plist的作用就是可以配置不同的信息,比如:Bundle name、Bundle versions string, short、Bundle version等,以区分下不同环境。

别忘了在build setting–>Info.plist File配置

例如:

//:configuration = DebugINFOPLIST_FILE = IOS-WeidaiCreditLoan/IOS-WeidaiCreditLoan-dev-Info.plist

//:configuration = ReleaseINFOPLIST_FILE = IOS-WeidaiCreditLoan/IOS-WeidaiCreditLoan-dev-Info.plist

//:completeSettings = someINFOPLIST_FILE

预定义宏(Build Setting–>Preprocessor Macros)

这个宏是一个全局宏,在所有/整个工程的代码中都是有效的,我们可以在这里添加上环境与处理的宏(例如:WD_Environment_Mode,这个是随便自己取的)

然后在.pch文件中

/**

WD_Environment_Mode

0:生产环境

1:测试环境

2:开发环境

*/#ifdef WD_Environment_Mode

#ifWD_Environment_Mode == 0

#defineWDAPIServerUrl   @""

#defineJSPatchAppKey     @""

#elifWD_Environment_Mode == 1

#defineWDAPIServerUrl @""

#defineJSPatchAppKey  @""

#elifWD_Environment_Mode == 2

#defineWDAPIServerUrl @""

#defineJSPatchAppKey  @""

#else

#warning"未匹配环境"

#endif

到此,在项目中创建多个target的目的就已经达到了。

iOS技术交流:566912706

相关文章

网友评论

  • SoaringHeart:WD_Environment_Mode 定位在pch #endif 外边对吗?
    SoaringHeart:@狂奔蚂蚁 自己摸索解决了
    Colin_狂奔的蚂蚁:@SoaringHeart 要在配置里面配置下
    SoaringHeart:*/#ifdef WD_Environment_Mode

    一直报不匹配的错误
  • Mr_Zander:请问,在非主target里面怎么进行混编呢?我想用一个独立的target对微信或者qq登录进行集成。
    Colin_狂奔的蚂蚁:@施治昂 是用的pod导的库吗,如果是,将非target 指向主target 的pod索引就可以了
    Mr_Zander:确实可以,谢谢。
    再请教一下,我怎么在非主target里面引用CommonCrypto这个库,来进行MD5呢?
    Colin_狂奔的蚂蚁:@施治昂 在非主target 里使用就不勾选主target 就达到目的了
  • 纠结的哈士奇:总感觉这个复杂了,发现了这个,感觉简单不少:http://www.cnblogs.com/yajunLi/p/6001132.html
    Eric_1024:@jy__Lu 场景一
    jy__Lu:不是一回事儿吧,作者说的是一个项目多个target共享一份代码,为了区分各种测试环境下不同配置的一种解决方案。
    而链接这篇文章是一个项目中不同的客户端,放在一个项目下通过target来管理,每个target代码逻辑都不同
    纠结的哈士奇::smile: :smile: 共勉 ,分享一下,实现方式应该不止一种的
  • 一只风流的dog:大神, 有demo咩
    Colin_狂奔的蚂蚁:@VWu_SmailH 加我qq(1159991642),我给你说
    Colin_狂奔的蚂蚁:@VWu_SmailH 想要,抽时间可以教你

本文标题:如何在iOS项目中创建多个target?

本文链接:https://www.haomeiwen.com/subject/mjaxrttx.html