组件化方案
一、静态库static Library
1.Xcode,File -> new -> projest -> static Library ,我命名为HBTest
2.新建完成后command + B 编译一下。
3.将当前窗口关闭,然后在原工程中找个文件夹 add File ,将HBTest.xcodeproj添加到文件夹中,注意,如果HBTest.xcodeproj不带有小三角形,表示还没编译过。
4.引入之后并不代表这个工程就立马能够使用了。在原工程中target -> Build Phases -> Link Binary With Libraries 中,添加对应的.a文件
5.在HBTest工程中,添加测试代码。
// HBTest .h 文件
@interface HBTest : NSObject
+(void)sayHello;
@end
—————————————————————————
// HBTest .m 文件
@implementation HBTest
+(void)sayHello{
NSLog(@"hello");
}
@end
6.在原工程中找个位置 #import <HBTest/HBTest.h>
调用 sayHello
#import "ViewController.h"
#import <HBTest/HBTest.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor lightGrayColor];
// Do any additional setup after loading the view.
[HBTest sayHello];
}
@end
command + R
看控制台打印
2019-10-30 22:40:09.535082+0800 组件化实现[2660:112991] hello
二、CocoaPods
1.登录github新建仓库
2.打开终端 pod lib create HBPodTest
,根据提示填入对应内容
What platform do you want to use?? [ iOS / macOS ]
> ios
What language do you want to use?? [ Swift / ObjC ]
> objc
Would you like to include a demo application with your library? [ Yes / No ]
> yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> none
Would you like to do view based testing? [ Yes / No ]
> no
What is your class prefix?
> HB
输入完成后会自动创建一个工程,包含了一个demo,并打开,如下图
其中,HBPodTest
为demo工程,这里面的Pod已经默认添加了我们要创建的pod库
3.到包含有HBPodTest.podspec
文件的文件夹中认证
3.1 cd hbpodtest
3.2 pod lib lint HBPodTest.podspec
这里出现了两个警告:1)这个提交没有意义 2)GitHub没有找到我这个地址(因为我忘记点创建了)
警告解决方案
<1> 关于 WARN | summary: The summary is not meaningful.
警告的处理方案。
HBPodTest.podspec
文件中的summary
以及 description
需要编辑内容,且内容不能一样。
<2> GitHub没有找到我这个地址
先回去GitHub把仓库建起来。
3.3 pod lib lint HBPodTest.podspec --allow-warnings
经过一段时间等待之后认准
HBPodTest passed validation.
表示认证通过,我看别人的博客都不会出现这个无意义的警告,真是莫名其妙。
4.回到工程
4.1 工程中有个配置文件,这里面对应的都是我们的pod库的一些信息,目前我们还不需要对它做什么修改,放着就行。当然,如果你GitHub的地址,跟里面的s.homepage
没对应上的话,还是要同步的。
ReplaceMe.m
这个文件删除。
####5.将工程推送到GitHub
5.1 终端cd到.podspec所在的这一层文件夹
5.2 执行git指令
git add .
git commit -m 'first commit'
// 可以在.podspec文件中的那个地址,比如我就是 : https://github.com/GitHubYhb/HBPodTest
git remote add origin https://github.com/(这里填gitHub用户名)/(你的公共库名).git
git push -u origin master
这时候,我们GitHub的仓库中,就会有我们创建的文件了。
能看到,他上面pod支持 还是not found 代表我们的革命尚未结束。
5.3 再次验证一下我们这个pod pod lib lint HBPodTest.podspec --allow-warnings
(如果之前不会报警告的就没必要 -- 后面的)
####6.提交pod
6.1 Specs仓库是用来存放GitHub上面所有公共Pod的索引的文件,我们要做到就是让本地的pod在Specs建立联系.在做这个之前,需要将我们完善后的工程代码,打一个tag,同步到服务端
git tag 0.1.0 // 根据自己设置的版本来,下面一句一样
git push origin 0.1.0
完成后的提示如下图
6.2 使用spec
验证tag ,日常忽略警告...
pod spec lint HBPodTest.podspec --allow-warnings
pod trunk push HBPod.podspec
这里如果是第一次的话,会报错,意思是需要先用pod trunk register
去注册
2)pod trunk register 邮箱地址 ‘你的名字’ --verbose
一顿输出之后,我再一次输入了 pod trunk push HBPod.podspec
然后又提示我那个无意义的警告
pod trunk push HBPod.podspec --allow-warnings
然后又报错,意思是我刚刚注册的还没有验证。
4)去刚刚填写的邮箱内查看邮件,内容如下
复制网址去验证刚刚注册的东西
看到这个界面就可以回到终端了。
5)输入 pod trunk me
,可以看到我们的注册信息
pod trunk push HBPod.podspec --allow-warnings
,一顿输出。然后就出现了这个东西,很明显,pod仓库提交完成。
--------------------------------------------------------------------------------
🎉 Congrats
🚀 HBPod (0.1.0) successfully published
📅 October 31st, 02:23
🌎 https://cocoapods.org/pods/HBPod
👍 Tell your friends!
--------------------------------------------------------------------------------
7)回到GitHub能看到我们的pod支持已经变成了v0.1.0
####7.集成HBPodTest
7.1 找一个工程,在PodFile中添加pod 'HBPodTest'
7.2 pod install
然后发现报错了!
pod repo update
,然后pod install
。
如果不行的话,就按照我这个操作吧。
//这两条非必须
1. pod repo remove master
2. pod setup
3. pod repo update
4. pod install
根据以上指令执行后,安装成功
7.3 调试
总结
-
GitHub
新建仓库 -
pod lib create
名称 -
修改
名称.podspec
summary
简介description
描述Swift
需要指定Swift
版本。如:s.swift_version = '5.0'
-
pod lib lint
验证 -
于
classes
文件夹中添加代码文件 -
提交
git
。git add .
git commit -m 'first commit'
git remote add origin https://github.com/(这里填gitHub用户名)/(你的公共库名).git
git push -u origin master
git tag 0.1.0
git push origin 0.1.0
-
spec
验证。pod spec lint 名称.podspec
-
pod trunk push 名称.podspec
。成功就表示完成trunk
注册流程pod trunk register 邮箱地址 ‘你的名字’ --verbose
- 去邮箱验证
pod trunk me
查看信息pod trunk push 名称.podspec
-
去
GitHub
看,是否有pod | 0.1.0
的标志。 -
项目集成我们自建的
pod
项目。- 出错的话就更新一下
pod
。pod repo update
pod install
- 如果很慢的话试试。
pod install --no-repo-update
- 出错的话就更新一下