iOS多工程架构(一)—— 创建

时间:2021-7-20 作者:qvyue

多工程架构,是由多个Project包裹在一个Workspace里面的一种架构。其主要目的是为将不同的功能分割开,由不同人员进行开发与维护。

这里的多个project可以由MainProject(主项目),PartProject(功能项目,可多个),NetworkManager,Extension等组成。

一、创建Workspace

创建Workspace,作为最外层的包裹体来管理工程。

iOS多工程架构(一)—— 创建
创建Workspace

将创建好的Workspace放到创建好的文件里面

iOS多工程架构(一)—— 创建
保存Workspace

二、创建MainProject

创建MainProject作为主工程,可在此基础上开发APP的主要功能(TabBar,Naviga等)

iOS多工程架构(一)—— 创建
创建Project
iOS多工程架构(一)—— 创建
选择APP
iOS多工程架构(一)—— 创建
创建工程名
iOS多工程架构(一)—— 创建
存储位置

这一步要注意两点:

1、注意创建的Project要选择APP模块

2、要放到对应的Workspace里面(最后一张图红色框的地方)

到这里其实一个正常的工程是创建完成了,可以在里面正常写项目之类的了。接下来的其实就是对原本在MainProject里面的模块进行抽离。

1、如果想把项目中的一个Person模块分离开来,可以跟上一步一样使用File => New => Project => APP,这样就可以新分离一个Person模块给其他同事开发,这样既不会相互干扰,而且运行的时候只要运行自己的Targets就行了(怎么把MainProject和Person模块衔接起来,后面再说)。如果是独立开发或者项目不大,可以直接在MainProject开发,省掉这一步

2、如果是网络请求之类的共同功能可以使用framework模块

三、Framework创建

这个跟上面的MainProject创建相似,只不过后面的APP换成Framework选项

iOS多工程架构(一)—— 创建
创建framework
iOS多工程架构(一)—— 创建
存储位置

这里同样要注意存储位置,是在Workspace里面的

iOS多工程架构(一)—— 创建
结构图

这个是加完了NetworkManager(framework),MainProject,Person之后的结构图。本来NetworkManager里面有个.h文件的,由于我是swift开发,所以把它删了,新增了个NetworkManager.swift 

接下来把MainProject、Person一起跟NetworkManager进行链接

四、链接framework

iOS多工程架构(一)—— 创建
添加framework

选择你需要链接的Target,Build Phase => Link Binary With Libraries => + => 你的framework(NetworkManager)

iOS多工程架构(一)—— 创建
添加路径

选择你需要链接的Target,Build Settings => 搜索header search => 输入$(SRCROOT)/../NetworkManager

iOS多工程架构(一)—— 创建
code

在对应的文件导入NetworkManager就可以用了,这里的lg()是我在NetworkManger.swift实现的func,这里记得要给NetworkManager这个Class设置Public属性,func也是要Public。

五、Pod管理设置

关于Pod管理我就直接发代码了,多工程管理的Pod库是哪个工程需要哪个第三方,就导入那个Pod。要注意的是,如果是在Framework中导入Pod的话,是所有引用这个Framework的Project都可以用,所以要避免重复调用。

use_frameworks! 

source ‘https://github.com/CocoaPods/Specs.git’

workspace ‘MVVMAndRAC_Swift.xcworkspace’

target :’MainProject’ do

platform :ios,’10.0′

project ‘MainProject/MainProject.xcodeproj’

pod’SnapKit’,                ‘~> 4.0.1’

end

target’Person’do

platform :ios,’10.0′

project ‘Person/Person.xcodeproj’

pod ‘Kingfisher’,                ‘~> 5.2.0’

end

target ‘NetworkManager’ do

  platform :ios,’10.0′

  project’NetworkManager/NetworkManager.xcodeproj’

  pod’Moya/RxSwift’,          ‘~> 14.0’

  end

然后pod install就可以了

end

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。