首页 > 其他分享 >iOS工程多模块架构(一)—— 创建

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

时间:2022-10-01 11:34:38浏览次数:55  
标签:架构 Workspace 创建 iOS framework 模块 NetworkManager MainProject pod

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

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

一、创建Workspace

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

  创建Workspace

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

  保存Workspace

二、创建MainProject

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

  创建Project   选择APP   创建工程名   存储位置

这一步要注意两点:

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

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

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

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

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

三、Framework创建

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

  创建framework   存储位置

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

  结构图

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

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

四、链接framework

  添加framework

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

 

  添加路径

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

  code

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

多个功能模块就创建多个Framework,如上链接起来。

五、Pod管理设置

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

后边会讲,多个Framework、Project下的pod管理

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/aliyun/aliyun-specs.git'

platform :ios, '9.3'
inhibit_all_warnings!

# 这里使用静态库还是动态库
use_frameworks!
#use_modular_headers!

workspace 'MVVMAndRAC_Swift.xcworkspace'

# 共用SDK 定义公用的,在其他的target中调用  shared_pods 即可
def shared_pods

# 网络
pod 'Alamofire', '4.8.2'

# UI相关
pod 'Parchment'
pod 'SnapKit'

# 图片相关
pod 'Kingfisher', :git => 'https://github.com/yuni-tech/Kingfisher.git', :commit => '2ce50ee24765b55826f4b16503d7b354d5e88265'
pod 'KingfisherWebP'
pod 'APNGKit'


# RxSwift
pod 'RxSwift'
pod 'RxCocoa'
# 日志
pod 'SwiftyBeaver'
end


target 'MianProject' do
project './MianProject'
shared_pods
end

 

标签:架构,Workspace,创建,iOS,framework,模块,NetworkManager,MainProject,pod
From: https://www.cnblogs.com/xujiahui/p/16746963.html

相关文章

  • IOS版数控仿真手机测试
    数控仿真苹果手机软件测试,欢迎iPhone用户下载试用,提出宝贵意见,此安装包为越狱包,大多系统可能不支持。下载链接:https://pan.baidu.com/s/1Dmdoo0QNA0AyXoRTEhzqDg 提取码:......
  • 数字化工厂的功能架构是怎样的?
    数字化工厂实质上就是物理形式的工厂在数字空间的投射,并基于此来实现的以人机物(Human,Machines,Things)泛在互联为基础上,深度感知为支撑,智能决策为导向,精准管控为目的的细胞元......
  • 防火墙基础之高阶工程师企业网络架构​
    防火墙基础之高阶工程师企业网络架构​原理概述:​防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相......
  • Jupyter notebook导入Pycharm项目的.py文件里的模块及方法
    Jupyternotebook导入Pycharm项目种的.py文件里的模块及方法需要在Jupyternotebook里调用自己写的代码,过程如下。首先在Pycharm里写好一个文件,例如DCCACoef_Analysis.py......
  • 智谱AI联合焱融打造A100+全闪存储的大规模AI架构
    摘要在今年的北京冬奥会上我们见证了人工智能技术的先进性,现场应用涉及人工智能技术的方方面面,包含技术层的计算机视觉、语音识别、自然语言处理、机器学习、大数据管理、智......
  • 《凤凰架构》笔记
    《凤凰架构》网址:https://icyfenix.cn/技术方法论微服务不是银弹目的:微服务的驱动力微服务的目的是有效的拆分应用,实现敏捷开发和部署。提高性能一般不是目的。原则:能......
  • HDFS架构设计理念以及优缺点
    Hadoop是一个由Apache基金会开发的分布式系统基础架构。可以快速实现大规模数据的分布式存储开发,以及分布式程序的快速开发,利用集群的威力进行大数据的高速存储和运算。其......
  • HDFS架构设计理念以及优缺点
    Hadoop是一个由Apache基金会开发的分布式系统基础架构。可以快速实现大规模数据的分布式存储开发,以及分布式程序的快速开发,利用集群的威力进行大数据的高速存储和运算。......
  • h5页面在ios手机输入框内emoji表情长度判断
    1、需求:要写一个讨论区的h5页面,当然包含了输入框并且输入框限制字符数30个,测试发现在ios手机输入emoji表情后输入框内就会超出所限制的字符长度,(说白了就是只要输入表......
  • node js post请求(axios)
    node.js可以直接运行js文件 在电脑上配置了node就可以直接用了运行js文件:用vscode打开终端运行语法:nodefilename.js例:  node自带http模块,可以直接写post请......