iOS 学习笔记 - 组件化(一)

1,340 阅读5分钟

组件化方案

一、静态库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没对应上的话,还是要同步的。

4.2 添加文件 这里我选择直接在当前工程新建文件。 保存路径务必是在Classes文件夹下 然后往里面随便添加一点代码。想些啥写啥,能编译过就行。 后续可以把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

6.3 提交到Specs仓库

  1. pod trunk push HBPod.podspec 这里如果是第一次的话,会报错,意思是需要先用pod trunk register去注册

2)pod trunk register 邮箱地址 ‘你的名字’ --verbose 一顿输出之后,我再一次输入了 pod trunk push HBPod.podspec然后又提示我那个无意义的警告

3)改命令为 pod trunk push HBPod.podspec --allow-warnings 然后又报错,意思是我刚刚注册的还没有验证。

4)去刚刚填写的邮箱内查看邮件,内容如下

复制网址去验证刚刚注册的东西

看到这个界面就可以回到终端了。

5)输入 pod trunk me,可以看到我们的注册信息

6)再次push 输入 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 然后发现报错了!

根据提示内容操作 我们需要更新本地spec库 尝试pod repo update,然后pod install

如果不行的话,就按照我这个操作吧。

//这两条非必须
1. pod repo remove master 
2. pod setup
3. pod repo update
4. pod install

根据以上指令执行后,安装成功

7.3 调试

总结

  1. GitHub新建仓库

  2. pod lib create 名称

  3. 修改 名称.podspec

    1. summary 简介
    2. description描述
    3. Swift 需要指定 Swift版本。如:s.swift_version = '5.0'
  4. pod lib lint 验证

  5. classes文件夹中添加代码文件

  6. 提交git

    1. git add .
    2. git commit -m 'first commit'
    3. git remote add origin https://github.com/(这里填gitHub用户名)/(你的公共库名).git
    4. git push -u origin master
    5. git tag 0.1.0
    6. git push origin 0.1.0
  7. spec验证。 pod spec lint 名称.podspec

  8. pod trunk push 名称.podspec。成功就表示完成

    1. trunk注册流程
    2. pod trunk register 邮箱地址 ‘你的名字’ --verbose
    3. 去邮箱验证
    4. pod trunk me查看信息
    5. pod trunk push 名称.podspec
  9. GitHub看,是否有pod | 0.1.0的标志。

  10. 项目集成我们自建的pod项目。

    1. 出错的话就更新一下podpod repo update
    2. pod install
    3. 如果很慢的话试试。pod install --no-repo-update