workspace组件化

2020-03-12  本文已影响0人  咚咚嗒大人

一:创建功能模块
1、首先创建文件夹,文件夹下面创建一个workspace工程,再创建4个project工程

1__#$!@%!#__Pasted Graphic 1.png

2、然后打开workspace文件,找到左下角的 ➕ ,
选择“Add Files to “xxx”…, 选择添加模块的xcodeproj文件即可。


Pasted Graphic 2.png Pasted Graphic 3.png

TestBasis组件:
将工具类直接拖放到TestBasis项目中,再创建TestBasis.podspec文件,引入对应的具体类,因为所有功能模块都依赖这个组件,所以pod install 后就会引入到pod中。

二:创建项目的podspec文件

pod spec create 《spec文件名不加后缀 》

spec文件的格式,网上搜索查阅

如果不同的podspec之前出现依赖关系,例如demo三个功能模块依赖TestBasis模块,写法为:
a.dependency 'TestBasis’ #模块名
或者依赖base具体的小模块的写法为:
a.dependency 'TestBasis/TestBasis/BaseSDK‘ #模块名/模块别名/别名小类…

引用Development Pods模块类:
import 模块名 #否则无法调用

我创建了4个spec,每个podspec文件相当于一个模块。一个基础base模块,3个功能模块

1__#$!@%!#__Pasted Graphic.png

为何要将功能模块单独创建一个podspec而不是在一个里面?
因为当主项目pod子模块时,会以一个podspec文件为一个模块,如果功能模块都放在一个podspec里面,那么他们在主项目中属于在一个模块下。但是在功能模块的workspace中,功能模块是独立的在不同的模块中,这就会导致kCTMediatorParamsKeySwiftTargetModuleName 对应的value(模块名称)出现不确定的问题。

创建好的podspec文件后,打开workspace,同导入组件的方法,将podspec导入到workspace中。

三:创建Podfile文件
1)终端中,cd 到项目总目录
2)接着上一步,终端输入 vim Podfile
3)键盘输入 i,进入编辑模式,输入
4)输入内容:

    workspace 'ydRoute.xcworkspace' #项目包含了一个名为ydRoute的workspace
    platform :ios, '11.0'
    inhibit_all_warnings!
    use_frameworks!
    install! 'cocoapods', :deterministic_uuids => false
    source 'https://github.com/dongMan/dxjRouter.git'
    source 'https://github.com/CocoaPods/Specs.git'
    target 'TestA' do project 'TestA/TestA.xcodeproj'
            pod 'TestBasis', :path => "TestBasis.podspec" #pod ‘模块名/模块小名/模块小小名…‘, :path => “模块.podspec"
    end

5)然后按Esc
6)按住shift键的同时按住冒号键(:),然后输入wq
7)在当前工程目录下输入 pod install
这时候install很难一次成功,很多问题都是出在podspec引入的结构、依赖关系不对,根据提示修改。。。

四:上传项目到git
1、在git创建space,复制ssh地址

2__#$!@%!#__Pasted Graphic.png

2、打开终端,cd到项目根目录
cd 需要上传的项目根目录

3、初始化本地仓库
git init

4、添加目标文件至本地仓库
git add .

5、提交
git commit -m “提交注释”

6、关联远程仓库,其中origin后面是github上需要关联的仓库网址。
git remote add origin ssh地址

7、git push origin master

以上步骤就是创建组件模块的全部,接下来再创建主工程就可以了,在主工程podfile中pod对应模块即可。

参考文章:
https://www.jianshu.com/p/88a6d99cf953

上一篇 下一篇

猜你喜欢

热点阅读