技术分享iOS DeveloperiOS开发

iOS 使用Cocoapods创建自己的Cocoapods公共库

2017-03-03  本文已影响1957人  ToSimple

使用pod管理代码的好处

通常在开发的过程中,大多时候,我们会处理一类相同的操作,比如对于字符串String的邮箱验证,是否为空,手机号验证,或者一些UIView的动画操作,我们为了避免写一些重复的代码,可能经过类目或者延展的形式对原有的类进行了一个扩充。还有一些是工程中一些基本的公共组件,比如城市列表,刷新控件,网络请求库或者商品的目录这种基本公共组件,在工程中好多地方需要调用,我们都可以进行封装成一个组件功能模块。为了以后方便在其他App中使用,我们可以使用Cocoapods把这些小点子,小功能,可以封装成一个pod,当下次使用的时候,只需简单配置就可以了。这一点特别是在公司开发多个项目的时候,可以很方便快速的共享公共的代码,节约开发时间,这就是为什么好多公司喜欢组件化管理代码。至于库是创建私有的还是公共的,看自己和公司要求而定,大多情况下公司的是私有库pod。本篇主要以创建公共库示例,进行阐述。

1. 创建一个工程

1.打开终端,切换到你要创建的位置的目录,我这里是桌面/desktop/pod

 cd desktop/pod
pod lib create LPodTest
屏幕快照 2017-02-04 下午3.21.31.png

2.填写Pod的Metadata和验证

056E7429-61BE-42C6-97CD-30BCFDAE89CB.png

接下来,我们做一个远程验证

pod lib lint LPodTest.podspec
-> LPodTest (0.1.0)
    - WARN  | url: The URL (https://github.com/LDreame/LPodTest) is not reachable.

[!] LPodTest did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it) and all results apply only to public specs, but you can use ```--private` to ignore them if linting the specification for a private pod.
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run: 
    `echo "2.3" > .swift-version`.
You can use the `--no-clean` option to inspect any issue.

这个意思是告诉我们,LPodTest.podspec文件里面有一个不符合要求,需要进行修改:
需要指定一个可用的pod的首页URL,因为我们还没有在GitHub上面创建任何项目有关的信息,所以不能通过
因为我的LPodTest.podspec文件s.summary 和s.description已经简单的做了介绍,如果没有做任何修改的话,还会出现以下两个警告:

    - WARN  | The summary is not meaningful.
    - WARN  | The description is not meaningful.

如果按照上面的步骤一步一步下来,我们还没有在GitHub上面创建相关的仓库,因此可以先进入GitHub账户创建仓库

AA3E43C1-AAAD-41CD-A1B1-62FAE91B4FBB.png

接下来就需要把自己的工程推送到Github:

git add .
git commit -m “Initial Commit"
git remote add origin https://github.com/<GITHUB_USERNAME>/YourPodName.git // replace <GITHUB_USERNAME> with your github.com username
git push -u origin master

做完以上操作没有问题的话, 就可以做验证了:

 pod lib lint LPodTest.podspec

 -> LPodTest (0.1.0)

LPodTest passed validation.

只要见到passed validation就是成功通过了验证.

3. 添加自己的代码

通过以上步骤,我们只是创建了一个合格的空的工程,并没有实现任何功能,接下来我们就需要把自己要实现的功能代码方进去.


265785DD-F495-45DE-A837-23A9B959C860.png

找到工程中ReplaceMe文件,替换就可以.
如果你在创建工程时候创建了一个包含demo的工程,那么你可以先切换到工程的Example文件目录下面使用命令:

pod install 
Analyzing dependencies
Fetching podspec for `LPodTest` from `../`
Downloading dependencies
Installing LPodTest 0.1.0 (was 0.1.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

成功以后你就可以在demo文件中使用你的功能文件了.如果不能导入,那么可以commond + B编译一下再导入使用

4. 提交自己的pod

Step 1: Tagging

Specs仓库是用来存放GitHub上面所有公共Pod的索引的文件,我们要做到就是让本地的pod在Specs建立联系.在做这个之前,需要将我们完善后的工程代码,打一个tag,同步到服务端:

git tag 0.1.0
qddios2deiMac:example qddios$ git push origin 0.1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:LDreame/LPodTest.git
 * [new tag]         0.1.0 -> 0.1.0

Step 2 :验证

终端切换到LPodTest.podspec文件所在的目录下面,运行命令

pod spec lint LPodTest.podspec

 -> LPodTest (0.1.0)

Analyzed 1 podspec.

LPodTest.podspec passed validation.

Step 3 : 提交pod 到Specs仓库

pod trunk push LPodTest.podspec
Updating spec repo `master`
Validating podspec
 -> LPodTest (0.1.0)

Updating spec repo `master`

--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  LPodTest (0.1.0) successfully published
 📅  March 3rd, 03:07
 🌎  https://cocoapods.org/pods/LPodTest
 👍  Tell your friends!
--------------------------------------------------------------------------------

5. pod search 检验是否可用

大多情况下会出现这个问题:

[!] Unable to find a pod with name, author, summary, or descriptionmatching `LPodTest

这主要是因为在本地索引里面没有, 解决办法

  1. pod setup (不行,实用方法二)
  2. pod repo update(不行,试用方法三)
  3. 前往这个路径下~/Library/Caches/CocoaPods删除search_index.json文件 , 或者使用终端命令删除:
rm ~/Library/Caches/CocoaPods/search_index.json

然后重新搜索.


A2AA9C93-991D-4222-B70D-21ED39202AE4.png
上一篇下一篇

猜你喜欢

热点阅读