一、组件项目创建步骤
1、在桌面或者其他地方创建一个文件夹,如下图:
2、打开终端,cd到刚刚创建的文件夹
3、在终端输入命令行pod lib create LJTest2
,回车;
4、在终端确认以下问题:
4.1、用于哪个平台
What platform do you want to use?? [ iOS / macOS ] > iOS
4.2、开发语音,Swift或者ObjC
What language do you want to use?? [ Swift / ObjC ] > ObjC
4.3、是否需要一个 demo 用来测试组件
Would you like to include a demo application with your library? [ Yes / No ] > Yes
4.4、将使用哪些测试框架
Which testing frameworks will you use? [ Specta / Kiwi / None ] > None
4.5、是否需要基于UI的测试
Would you like to do view based testing? [ Yes / No ] > Yes
4.6、组件中文件的前缀
What is your class prefix? > LJ
5、确认完成之后,系统会自动配置组件并创建打开项目,如下图:
6、在项目的Podfile文件中,可以看到:pod 'LJTest2', :path => '../'
,这一句将组件路径指向了本地,对应的是如下目录:
7、在Classes文件夹中,存放组件的各类文件;在Assets文件夹中,存放组件中使用的图片等资源。
8、在Development Pods -> LJTest2文件夹中创建组件类,并删除ReplaceMe文件,如下图:
9、编写好测试代码以后,在终端cd到Example文件夹下,输入命令pod install
回车。
10、完成上述步骤以后,即可在Example for 文件名
文件中测试组件中的功能了
二、关联远程仓库
1、前往git上创建一个远程仓库,我这里使用的是gitlab!
2、在终端cd到LJTest2目录下,如下图
3、在终端输入以下命令
git status .
git commit -m "提交的内容***"
4、添加需要关联的远程仓库,即下图git地址,然后在终端输入以下命令:
git remote add origin https://gitlab.com/common52/LJTest2.git
(https://gitlab.com/common52/LJTest2.git
为组件源码地址)
5、继续在终端输入以下命令回车,然后前往git上切到master分支,即可看到我们提交的记录了
git push -u origin master
6、推送成功以后,我们需要给项目打上一个tag版本号,该tag的版本号必须与podspec文件中的版本号一致,如下图
在终端使用如下命令行打上tag:
git tag 0.1.0
将tag推送至远端
git push --tags
7、tag推送完成以后,在git上刷新即可看到我们刚刚推送的tag了
三、发布到cocoapods
1、验证podspec文件信息是否可以通过验证,在终端输入以下命令
pod spec lint --allow-warnings
,可能会报错,如下:
2、如果第一步报错,则可使用以下命令进行验证,出现lJTest2 passed validation
即验证通过:
pod lib lint LJTest2.podspec --allow-warnings
验证时使用第三方的验证方式
pod lib lint --use-libraries --allow-warnings --sources=https://gitlab.gyenno.com/gyennoios/common/gyennospecs.git,https://github.com/CocoaPods/Specs.git --verbose
3、开始发布,首先通过trunk注册生成一条会话:
pod trunk register 337101067@qq.com Lucky --description=test
4、前往邮箱验证,如下图
5、修改podspec文件中s.homepage和s.source文件路径:![在这里插入图片描述](https://img-blog.csdnimg.cn/6a2b661037d04e879a4833c07fe943a1.png)
6、使用以下命令将podspec提交到CocoaPods
pod repo push commonspecs LJTest2.podspec --allow-warnings
其中commonspecs
为组件索引库名,组件通过哪个索引下载则填写哪个索引
四、文件配置
图片设置
1、设置podspecs中的资源路径,如下图:
2、在该文件夹下创建存储图片的xcassets文件
3、在刚创建的xcassets文件show in finder,将创建的文件拖入Assets文件夹
4、使用代码通过bundle获取图片,imageName为图片名称
五、创建子库
1、比如下图所示LJTextView为一个子库,
2、注释掉之前s.source_files
和原来的依赖库
3、添加以下代码,设置子库
s.subspec 'LJTextView' do |a|
a.source_files = [
'LJTest2/Classes/LJTextView/*'
]
a.resource_bundles = {
'LJTest2' => ['LJTest2/Assets/*.{xcassets}']
}
# a.dependency 'Masonry'
end
· s.subspec
后面是我们文件目录对应名称
· do
后面是起的一个别名
· a.source_files
为文件路径
· a.dependency
为子库的依赖库(目前我这边添加依赖库以后导入会报错,暂未找到原因)
4、完成以上修改以后,将版本号进行修改,并打上tag提交至cocoapods
5、在项目中使用,将之前的pod 'LJTest2'
修改为pod 'LJTest2/LJTextView'
,打开终端cd到项目的根目录,使用pod install
进行安装,这样我们就可以看到项目中只有一个LJTextView了
六、使用
1、在所需要的项目中,编辑podfile文件,在文件最顶部输入以下两行
其他第三方的索引地址(不输入该行无法通过pods导入其他第三方)
source 'https://github.com/CocoaPods/Specs.git'
自己的组件索引地址
source 'https://gitlab.gyenno.com/gyennoios/common/gyennospecs.git'
2、输入pod 'LJTest2'
,在项目的根目录输入pod install
安装组件
七、更新版本
1、修改podspec文件的s.version对应版本号
2、根据对应的版本号打tag,并推送到远程
git tag ***
git push --tags
3、推送到远程源码仓库
git push origin master
4、本地验证
pod lib lint --allow-warnings
5、推送到远程索引仓库
pod repo push 索引仓库名 组件库名.podspec --allow-warnings
6、在使用的项目中进行以下命令更新pod
pod update 组件库名
八、问题记录
1、文件路径不匹配
- ERROR | [iOS] file patterns: The `resource_bundles` pattern for `LJTest1` did not match any file.
2、推送组件到远端前,先修改podspec文件中s.homepage
和s.source
的配置路径,否则会报错;
3、组件上传完成以后,如果使用pod search
无法搜索到该组件,则需清理本地的索引文件,具体为以下命令:
3.1 删除本地搜索文件
rm ~/Library/Caches/CocoaPods/search_index.json
3.2 更新本地pod库
pod repo update
3.3 重新简历搜索
pod search LJTest2