android pod 组件化_iOS组件化(一)发布组件到CocoaPods

最近做项目xxxxx....

以上省略1000字,项目必需要搞组件化!!!

1.安装CocoaPods

组件使用必然需要用到CocoaPods,并且使用CocoaPoPds来管理你的组件,既然要发布到CocoaPods,先安装CocoaPods是第一步,这个网上的教程很多,就不详细说了。

2.创建远程仓库

在github上面Create a new repository

Repository name 即为组件名字

Description 可以随便写一些

Public和Private根据自己的需要选择

README文件不用勾选,使用默认的模板即可

创建完成得到

远程仓库索引

https://github.com/MethodName/TShareView.git

3.创建本地组件代码库

命令

pod lib create

示例

pod lib create TShareView

执行结果

What platform do you want to use?? [ iOS / macOS ] 选择平台

What language do you want to use?? [ Swift / ObjC ] 选择语言

Would you like to include a demo application with your library? [ Yes / No ] 是否自动生成一个用来做demo测试的模板库

Which testing frameworks will you use? [ Specta / Kiwi / None ] 是否集成测试框架

Would you like to do view based testing? [ Yes / No ] 是否做基于View的测试

What is your class prefix? --类文件前缀

示例(根据自己的实际需要选择即可)

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?

> TMM

完成之后将得到一个工程,目录结构如下

4.为组件工程添加组件

例如我将已经写好的组件文件放在工程Classes文件中,Classes文件位置如下图

添加组件文件

这两个文件就是组件的文件,ReplaceMe.m文件可以删除

5.将添加的组件文件Pod到Example文件夹中

进入TShareView>Example文件夹(有Podfile的文件夹)

执行 pod install 命令

执行完成后的工程目录

组件文件出现在Pods的工程中

6.修改.podspecs索引文件

打开工程中的TShareView.podspec文件

#

# Be sure to run `pod lib lint TShareView.podspec' to ensure this is a

# valid spec before submitting.

#

# Any lines starting with a # are optional, but their use is encouraged

# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html

#

Pod::Spec.new do |s|

s.name = 'TShareView' 1、组件名称

s.version = '0.1.0' 2、版本

s.summary = 'A short description of TShareView.' 3、组件描述

# This description is used to generate tags and improve search results.

# * Think: What does it do? Why did you write it? What is the focus?

# * Try to keep it short, snappy and to the point.

# * Write the description between the DESC delimiters below.

# * Finally, don't worry about the indent, CocoaPods strips it!

s.description = <

TODO: Add long description of the pod here.

DESC

s.homepage = 'https://github.com/Methodname/TShareView' 4、更换为github的仓库地址

# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'

s.license = { :type => 'MIT', :file => 'LICENSE' } 5、监听

s.author = { 'methodname@qq.com' => 'methodname@qq.com' } 6、作者

s.source = { :git => 'https://github.com/Methodname/TShareView.git', :tag => s.version.to_s } 7、更换为github的远程仓库索引

# s.social_media_url = 'https://twitter.com/'

s.ios.deployment_target = '8.0' 8、iOS支持版本

s.source_files = 'TShareView/Classes/**/*' 9、组件文件路径

# s.resource_bundles = {

# 'TShareView' => ['TShareView/Assets/*.png']

# }

# s.public_header_files = 'Pod/Classes/**/*.h'

# s.frameworks = 'UIKit', 'MapKit'

# s.dependency 'AFNetworking', '~> 2.3' 10、依赖

end

必须要更改的有:3、5、7、10处,其它项可以视情况更改。

第3处不更改,后台发布会报警告

第5处生成的可能是默认地址,不是你的github仓库地址

第7处生成的也可能是默认索引,不是你的github远程仓库索引

第10处为依赖组件,如果组件有依赖于其它组件,则需要放开此处注释,将组件引用进来,并且同时还需要在Podfile中添加依赖的组件,以保证项目能编译通过。

7.提交到远程仓库

在TShareView工程根目录执行

命令

git add .

git commit -m "提交说明"

git remote add origin 远程代码仓库地址

git push origin master

git tag 版本号 (注:这里的版本号必须和podspec里写的版本号一致)

git push --tags

示例

git add .

git commit -m "一个共享的组件"

git remote add origin https://github.com/MethodName/TShareView.git

git push origin master

git tag 0.1.0 (注:这里的版本号必须和podspec里写的版本号一致)

git push --tags

8.验证cocoaPods索引文件

在TShareView工程根目录执行

命令

pod spec lint --verbose --allow-warnings

验证成功打印

TShareView.podspec passed validation.

验证失败

可能会出现一些错误,会打印出一条红色错误消息告诉你有什么错误,这个时候不要慌,往上面翻,会有详细的错误说明;详细见文章最后的一些解决办法。

9.注册Trunk

我们可以使用trunk来发布组件,trunk需要CocoaPods 0.33版本以上

查看是否注册trunk

pod trunk me

注册命令

pod trunk register 邮箱 "注册名字" --verbose

示例

pod trunk register methodname@qq.com "methodname" --verbose

注册完成之后会给你的邮箱发个邮件,进入邮箱邮件里面有个链接,需要点击确认一下.

10.发布

在有.podspec文件的组件工程根目录执行

命令

pod trunk push xxxx.podspec

示例

pod trunk push TShareView.podspec

如果配置报警告的话,则需要在后面加--allow-warnings允许警告

pod trunk push TShareView.podspec --allow-warnings

11.发布完成

Updating spec repo `master`

Validating podspec

-> TShareView (0.1.0)

Updating spec repo `master`

--------------------------------------------------------------------------------

🎉 Congrats

🚀 TShareView (0.1.0) successfully published

📅 May 30th, 04:36

🌎 https://cocoapods.org/pods/TShareView

👍 Tell your friends!

--------------------------------------------------------------------------------

12.使用

现在,在Podfile中加入它,就能使用你的远程组件了,赶紧去找你的小伙伴分享吧~

pod 'TShareView'

13.发布完成之后搜索不到的问题解决办法。

将组件在CocoaPods上面发布之后,使用pod search 组件名称却搜不到相关的信息,这个时候需要将cocoaPods的搜索缓存文件清理一下,然后重新使用pod search,就能得到最新的结果。

进入搜索CocoaPods缓存目录

cd ~/Library/Caches/CocoaPods

查看缓存文件search_index.json

ls

删除搜索缓存文件

rm -f search_index.json

错误解决办法

找不到命令行路径

xcrun:error:unable to find utility 'simctl',not a deveoper tool or in PATH

在XCode->Preferences>Locations

将Command Line Tools 设置一下再重新执行上面的命令就行行了,原因是Command Line Tools默认是没有设置的,所以才会报以上错误。

迭代时引用了组件库

错误信息

xcodebuild: Returned an unsuccessful exit code.

组件有依赖,迭代组件版本的时候,需要加上--use-libraries,例如下:

pod spec lint --use-libraries

允许警告

--allow-warnings

例如下:

pod spec lint --allow-warnings

显示详情信息

--verbose

例如下:

pod spec lint --verbose

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值