美文网首页iOS开发问题总结Set多个target开发
IOS开发日记1-项目中配置多个target及podfile文件

IOS开发日记1-项目中配置多个target及podfile文件

作者: Simple_Dev | 来源:发表于2017-01-04 12:57 被阅读1597次

    前言

    最近公司的一个项目是分两个app端,两个app差异很小,差不多70%都是相同的模块,只是个别模块有些差异。最开始没想那么多,为了简单,分别创建了两个项目,后来因为领导要求两个端要同时进行,突然觉得要在两个项目中切换,复用相同的模块很麻烦,毅然决定,把两个app端柔和在一个项目中。记得以前在github上下载的第三方库提供的demo,可以选择不同的运行target,于是想到了创建多个target生成不同的app端,说干就干,于是开始试验项目中多个target配置。

    配置多个target

    1.copy target。

    在项目配置TARGETS中,选中需要复制的target目标,右键选择Duplicate,然后就会出现一个叫*** copy名字的target。

    2.修改target名称。

    首先可以先把新复制的target的名称修改了,双击target名字进入编辑状态,进行名字修改。

    然后修改scheme的名称,在Xcode左上角点击工程名称,在弹出的下拉框中选择Manage Schemes,在弹出的列表框中,选择新加的名为 *** copy的target,将它修改成和前面修改的相同的名字。

    3.配置target。

    在copy target的时候同时也复制了一份*** copy-info.plist文件,当然可以根据自己的需要修改此plist的的名字,但是一定将此plist文件和target重新绑定。选择新copy的target,点击General,会出现一个选择文件的按钮,点击选择你新修改名字的plist文件。

    到此2个target其实已经基本成功了,目前两个target已经可以运行了。后面你添加文件的时候,根据自己需要添加到对应的target就可以了。但是在代码中怎样区分两个target呢?我们可以添加一个预编译宏来解决。target->Build Setting,搜索:Preprocessor Macros,设置Debug和Release里的预编译宏内容,比如TARGET_VERSION=1表示一个target版本(注意=前后不能右空格,有空格会编译不过),程序中对不同版本这样判断:
    #if TARGET_VERSION_LITE ==1
    ...
    #elif TARGET_VERSION_LITE ==2
    ...
    #endif

    问题来了?

    由于项目中之前配置了podfile,复制之后两个target没什么问题,但是当我在podfile中添加一个新的三方库,pod install的时候,就会导致其中一个target会找不到头文件。之前查阅资料就看到一篇文章,提示要先把podfile文件写好,并且pod install了,最后再copy,这样就不会出现问题。但是一个项目有时候很难预料后面会用到什么第三方库,又是多人协作,难免别人不会再后面会添加新的第三方库。经过多次试验,查阅资料,感觉自己又像发现新大陆一样,原来pod文件编写也是一门学问,也是有很多语法的。解决问题的方法就是podfile文件的正确编写。查看了官方podfile文件编写语法,经过试验,终于解决了此问题。

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '8.0'
    abstract_target 'AAAA' do  
    
    pod 'AFNetworking', '~> 3.0'
    pod 'Masonry'
    pod 'MJRefresh'
    pod 'SDWebImage', '~>3.8'
    pod 'RongCloudIM/IMLib', '2.8.0'
    pod 'RongCloudIM/IMKit', '2.8.0'
    pod 'SVProgressHUD'
    
    target 'BBBB'
    target 'CCCC'
    end
    

    在podfile配置文件中,我使用了abstract_target关键字,后面跟的名字AAAA是一个不存在的target名字,后面增加我项目中实际存在的两个target,整体表示我这个两个target共用上面的所有库。当然我觉得还有其他方式可以实现,pod语法还不是很熟,还有很多需要学习了解的地方。

    最后,因为还有启动页和icon图片没有设置,不知道多个target会有如何配置,若有,会后续更新文章说明。

    结语

    第一次写简书,记录自己的开发笔记,还有很多不熟地方,对markdown不熟,语言组织能力也还欠缺,总觉得自己没讲清楚,继续努力。希望以后可以配图,图文并茂。
    最后文章有什么不对的地方,请大家多多指教~

    相关文章

      网友评论

      • 谁动了我的芝麻糖:我想请问一下,按照你文章中说的podfile的写法,最终在TARGETS->General中,看到的BBBB和CCCC这两个实际target的“Linked Frameworks and Libraries” 是 “libPods-AAAA-BBBB.a”和“libPods-AAAA-CCCC.a” 这个样子么?
        Simple_Dev:不好意思现在才看的,你说的是对的。
      • 原鸣清:Podfile 中“ abstract_target”超棒,解决了我的顽疾
        Simple_Dev: @原鸣清 哈哈,能解决问题就好!那个是参照官方pod语法
      • 滚来滚去的桔子:target 和 plist 文件重新绑定那里,我的没有出现按钮,只告诉我加载 info 文件失败。
        Simple_Dev:@滚来滚去的桔子 ok。好像是有些不一样了。
        滚来滚去的桔子:找到了,在实际的文件夹中,info 文件的名字还是xxx copy-info.plist,改成和 Xcode配置里一样的就可以了。
      • a_只羊:写的很好,target挺实用的

      本文标题:IOS开发日记1-项目中配置多个target及podfile文件

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