WorkSpace方式的iOS多工程联合编译
简言
对于iOS开发者而言,习惯使用一个工程开发,也是每个iOS开发者的常规操作,但是每当我们做完一个项目时,再去开发另一个项目,我们会发现,我们封装的网络框架类,HHKit类等会重新集成到新的项目里,这样会浪费很多开发时间,做了很多无用功。为了避免这种情况发生,大家不妨试试多工程在一个工作空间下(Workspace)开发,这种创建项目方式的优点是即插即用,极大的减少开发时间。
多工程的最终实现截图
由于本项目使用第三方SDK较多,所以使用cocoapods管理,个人建议使用cocoapods。当然多工程编译也可以不使用cocoapods管理,HHKit类包括UIKit类,和自己封装的UI类,HHNetworking类是网络请求类,HHSecurityNetwork类是网络加密请求类。
主工程JTDOASystem与其他三个类库相互独立,但可以调用其他三个类库的所有公开方法
实现步骤
一、创建.framework的静态库
1.静态库目录结构如下
创建HHNetworking,HHSecurityNetwork静态库方法同上。
2 .HHKit库里的所有类的头文件要引在HHKit.h里,如图
3.HHKit库里的所有类的.h要放在targets->Build Setting->Headers->Public里,如果不放在这里其他工程引用不到HHKit库里的类及类里面的方法,HHKit库自己用的类可以放在Private里
二、管理主工程与静态库
1.在主工程JTDOASystem里,同时引入HHNetworking,HHSecurityNetwork,HHKit的.codeproj,最好把这4个.xodeproj工程放在平级,方便查看代码。另外引入文件的快捷键:command+option+A
三、主工程与静态库使用cocoaPods管理
1.首先终端编译PodFile,PodFile编译如下:主工程和所有framework库都用cocoaPods管理
2 . 使用终端cd 项目路径,然后pod install 或pod update。
3.分别编译framework静态库,选中静态库,点击三角箭头运行一下就可以。
4.主工程添加静态库,目录targets->Build Phases->Link Binary With Libraries,如图
5.主工程创建.pch,对静态库cocoaPods引用的第三方库做关联,如图:
6.运行主工程,此时可以运行主工程了,如果一切顺利,就可以运行成功了,主工程可以顺利引用静态库及第三方SDK的类及方法。
四、注意事项
1.如果静态库中有category类,则在使用静态库的项目配置中Other Linker Flags需要添加参数-ObjC或者-all_load(这个-all_load慎用)。
五、总结
此时已大功告成,如果还有什么问题欢迎随时留言!
在集成或编译过程中,肯定会遇到各种各样的问题,欢迎大家一起探讨,共同进步。
我的联系方式QQ:1191092524,最后祝大家代码永无BUG!!!