iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)

https://blog.csdn.net/CodingFire/article/details/52470802

 

2016-09-08 13:55:30 CodingFire 阅读数 9469更多
分类专栏: Xcode工具 
 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 

记得一次面试有人问我有没有自己开源一些库,有是有的,但是确没有制作成可以通过pods导入的库,此乃一大憾事,后来跟着网上很多教程在那里捣鼓了半天,真的是半天时间,压根没用,今天无意间看到一篇博客,http://www.jianshu.com/p/489520b69d8b,参考了一下,有用,但并不是最正确的,里面有许多你不知道的坑等着你在跳,按照上面的步骤,基本和我以前看的一样,最后还是不行,经过俩小时的摸索,根据一些报错来查找原因,最后终于解决了这个问题,下面是博主刚刚创建的库: 
这里写图片描述
如果想要看具体功能可以看:https://github.com/codeliu6572/CustomAlertView

在看这个功能前,确定你会上传自己的项目代码到github,不会的可以看博主的文章:http://blog.csdn.net/codingfire/article/details/50387183 
下面来介绍下如何把自己的库制作成可以通过pod导入的库: 
上面那篇博客中的内容可以看下,为了保证正确,博主就重新在下面写命令:

1.用户名邮箱注册,为github的用户名和绑定邮箱(下面的内容替换为自己的):

<span style="color:#000000"><code>pod trunk <strong><span style="color:#000088 !important">register</span></strong> [email protected]<span style="color:#006666 !important">163.</span>com <span style="color:#f1fa8c">'codeliu6572</span>' <span style="color:#880000 !important">--verbose </span></code></span>

 

如果报错,一般是pod版本低或者ruby的版本低,这里不再说明解决办法,自行百度。

2.查看是否注册成功

<span style="color:#000000"><code>pod trunk <strong><span style="color:#000088 !important">me</span></strong>  </code></span>
  • 1

这里写图片描述
这样的就代表注册成功。

3.创建 .podspec文件 
这里一定要在工程中创建 .podspec文件,并把库文件放在一个文件中,看一下博主的: 
这里写图片描述
LICENSE文件(必不可少)和README.md文件都要有,且必须和库文件放在一个目录。 
创建方法:

<span style="color:#000000"><code>pod spec <strong><span style="color:#000088 !important">create</span></strong> LHHAlertView</code></span>

 

可以通过vim来打开文件操作,博主一般用电脑的文本编辑打开,打开后看到的内容有很多,博主只保留了基本的信息,如下:

<span style="color:#000000"><code><span style="color:#880000 !important">//特别说明,里面的注释是博主为了大家知道什么意思加的,实际使用时一定要去掉</span>
Pod::Spec.<strong><span style="color:#000088 !important">new</span></strong> <strong><span style="color:#000088 !important">do</span></strong> |s|
<span style="color:#880000 !important">//文件名</span>
s.name = <span style="color:#009900 !important">'LHHAlertView'</span>
<span style="color:#880000 !important">//版本</span>
s.version = <span style="color:#009900 !important">'1.0.1'</span>
<span style="color:#880000 !important">//描述信息</span>
s.summary = <span style="color:#009900 !important">'A view like UIAlertView on iOS.'</span>
<span style="color:#880000 !important">//这里的主页自己随便写</span>
s.homepage = <span style="color:#009900 !important">'http://blog.csdn.net/codingfire'</span> 
<span style="color:#880000 !important">//作者</span>
s.authors = { <span style="color:#009900 !important">'codeliu6572'</span> => <span style="color:#009900 !important">'[email protected]'</span> }
<span style="color:#880000 !important">//资源路径</span>
s.source = { :git => <span style="color:#009900 !important">'https://github.com/codeliu6572/CustomAlertView.git'</span>, :tag => <span style="color:#009900 !important">'1.0.1'</span> }
<span style="color:#880000 !important">//ARC模式</span>
s.requires_arc = <strong><span style="color:#000088 !important">true</span></strong>
<span style="color:#880000 !important">//license,一般我们用MIT</span>
s.license = <span style="color:#009900 !important">'MIT'</span>
<span style="color:#880000 !important">//允许的最低系统使用版本</span>
s.ios.deployment_target = <span style="color:#009900 !important">'7.0'</span>
<span style="color:#880000 !important">//库文件路径</span>
s.source_files = <span style="color:#009900 !important">'LHHAlertView/*'</span>
end
</code></span>

 

因为这里没有第三方库和系统库的引入,下面有个新的格式:

<span style="color:#000000"><code>这里是博主提交的新的库,供大家参考,每次通过编辑器打开修改时引号
都会改变,需要注意,所以每次都需要重新复制正确的引号来替换变更
的,小修改可以用vim打开,这样引号就不会变了,升级版本时,需要打
tag,记得从打tag那一步开始,第一次会输入账号密码,以后会提示授
权,允许即可。每次修改后记得一定要同步到github再继续下一步操
作。


除了下面的一些资源文件导入外,还有第三方的支持,xib等的支持,详细信息请查看:<strong><span style="color:#000088 !important">https</span></strong>://guides.cocoapods.org/syntax/podspec.html<span style="color:#880000 !important">#specification</span><span style="color:#880000 !important">
//特别说明,里面的注释是博主为了大家知道什么意思加的,实际使用时一定要去掉</span>
Pod::Spec.<span style="color:#4f4f4f !important">new</span> <span style="color:#4f4f4f !important">do</span> |s|

  s.name         = <span style="color:#009900 !important">'LHHTopScrollView'</span>
  s.<span style="color:#4f4f4f !important">version</span>      = <span style="color:#009900 !important">'1.0.5'</span>
  s.summary      = <span style="color:#009900 !important">'A banner for iOS.'</span>

  s.homepage     = <span style="color:#009900 !important">'http://blog.csdn.net/codingfire/article/details/52470802'</span>



  s.license      = <span style="color:#009900 !important">"MIT"</span>

  s.ios.deployment_target = <span style="color:#009900 !important">'7.0'</span>
  s.author       = { <span style="color:#009900 !important">'codeliu6572'</span> => <span style="color:#009900 !important">'[email protected]'</span> }

  s.source       = { :git => <span style="color:#009900 !important">'https://github.com/codeliu6572/ScrollVIewBanner.git'</span>, :tag => <span style="color:#009900 !important">'1.0.5'</span> }



  s.source_files  = <span style="color:#009900 !important">"LHHTopScrollView/*.{h,m}"</span>


  s.resources = <span style="color:#009900 !important">"LHHTopScrollView/*.png"</span>
如果有多个,后面加逗号隔开如: <span style="color:#009900 !important">'UIKit'</span>, <span style="color:#009900 !important">'XXXXXX'</span>
  s.framework  = <span style="color:#009900 !important">'UIKit'</span>
  s.requires_arc = <span style="color:#009900 !important">true</span>

  s.dependency <span style="color:#009900 !important">'SDWebImage'</span>

<span style="color:#ff79c6"><strong>end</strong></span>
</code></span>

这里s.source的git地址看下图: 
这里写图片描述
另外这里再说一个坑: 
这里写图片描述
这里的单引号注意看了,是不一样的,下面的很明显能看出来和上面圈起来的不同,用上面的那种,博主试了下,打不出来,那就复制,否则报错,编辑通不过。切记!!!

4.验证编辑是否通过

<span style="color:#000000"><code>pod <strong><span style="color:#000088 !important">lib</span></strong> lint LHHAlertView.podspec</code></span>

 

这里写图片描述 
以上为通过截图,只要按照博主的步骤来,这一步肯定可以通过的。

后来博主在使用时又报错了,信息如下:

<span style="color:#000000"><code>- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can <strong><span style="color:#000088 !important">use</span></strong> `--verbose` <strong><span style="color:#000088 !important">for</span></strong> more information.
- ERROR | xcodebuild:  /Users/Codeliu/Desktop/程序/VoiceLight/LHHVoiceLight/VoiceLight.h:<span style="color:#006666 !important">11</span>:<span style="color:#006666 !important">9</span>: error: <span style="color:#009900 !important">'Masonry.h'</span> file not found <strong><span style="color:#000088 !important">with</span></strong> <angled> <span style="color:#009900 !important"><strong><span style="color:#009900 !important">include</span></strong>;</span> <strong><span style="color:#000088 !important">use</span></strong> <span style="color:#009900 !important">"quotes"</span> instead
第一个错误博主怎么找也没找到,最后查找到原因是因为博主创建文件时第一次创建错了,把继承与NSObject的类手动改成了UIView,重新创建后不再报错;
第二个错误是因为Masonry在引入时系统提示我这么引入#<span style="color:#009900 !important"><strong><span style="color:#009900 !important">import</span></strong> <Masonry.h>,应该是#<strong><span style="color:#009900 !important">import</span></strong> "Masonry.h",但是这样系统报错,这是因为pods的缘故,build setting->ALways Search User Path ,设置为YES即刻。
</span></code></span>

5.打上tag,并提交到github

这里打tag一定要加上v,否则会出错 
事实证明这里加不加v都没关系,但是有一点,tag一定要和podspec文件中的tag一模一样。至于有其他的写法,博主尝试过但是有问题,也许还有没尝试的,就不乱下结论了,按照博主提供的方法来写不会有错。

<span style="color:#000000"><code>git <span style="color:#4f4f4f !important">tag</span> <span style="color:#009900 !important">'v1.0.1'</span>
git push <span style="color:#4f4f4f !important">--</span>tags

<span style="color:#4f4f4f !important">tag</span>打错了并已提交的
git <span style="color:#4f4f4f !important">tag</span> <span style="color:#f1fa8c">-d</span> xxx    <span style="color:#880000 !important">//删除本地tag</span>
接着
git push origin <span style="color:#4f4f4f !important">--</span>delete <span style="color:#4f4f4f !important">tag</span> xxx  <span style="color:#880000 !important">//删除远程tag,然后重新打tag</span></code></span>

提交时会提示输入账号密码,按照自己的github的账号密码来输入。

成功后: 
这里写图片描述

6.把podspec文件提交到github的库仓库中

<span style="color:#000000"><code>pod trunk <strong><span style="color:#000088 !important">push</span></strong> LHHAlertView<span style="color:#009900 !important">.podspec</span> 

//如果有警告 后面加 --allow-warnings</code></span>

这一步有可能会因为pods版本低而失败,根据提示信息更新pods

成功后截图: 
这里写图片描述

7.搜索提交的库

<span style="color:#000000"><code>pod search LHHAlertView</code></span>

 

然后就看到一开始的那张图了。

这里再啰嗦几句,以博主的这个Demo为例,Demo里面已经有了库文件,但是在Demo同等级的目录中依然要放一个库文件,目前博主成功的文件目录就是这样的,podspec文件一定要和库文件在一个目录中,其他注意事项每一步都有介绍,一定要注意。

总结:要把自己的库制作成通过pods导入还是有一定难度的,网上很多方法看着跟博主这里差不多,其实命令都一样,但是却有明显的不同,那就是细节部分,比如引号,打tag时的v,目录结构等等,稍有不慎就可能通不过编辑,就说这么多,如果遇到问题,欢迎加群讨论。

后来遇到的坑:  
1.通过代码创建的podspec文件里面都是双引号,博主用的都是单引号,经测试,无影响,还有UIKIT等库和第三方库的引入,以及版本升级,这一部分已经放在这里; 
2.发现一个问题,如果你在某个库中用了NSInteger,会报警告,原因是:typedef long NSInteger;类似这种情况的还有别的,如果遇到你可以替换成像这里应该是long,也可以选择忽略警告,比如:pod trunk push ScrollSliderView.podspec –allow-warnings; 
3.有时候在push时会遇到这样的报错:[!] There was an error pushing a new version to trunk: Net::OpenTimeout 不要惊慌,仅仅是因为网络不好没有push成功,不妨再试一次。

 

原文链接:加载失败,请重新获取