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

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

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

1.png

如果想要看具体功能可以看:https://github.com/codeliu6572/CustomAlertView


在看这个功能前,确定你会上传自己的项目代码到github,不会的可以看博主的文章:http://blog.csdn.net/codingfire/article/details/50387183


下面来介绍下如何把自己的库制作成可以通过pod导入的库:

上面那篇博客中的内容可以看下,为了保证正确,博主就重新在下面写命令:


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

pod trunk register codeliu6572@163.com 'codeliu6572' --verbose 

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


2.查看是否注册成功


pod trunk me  

1.png

这样的就代表注册成功。


3.创建 .podspec文件


这里一定要在工程中创建 .podspec文件,并把库文件放在一个文件中,看一下博主的:

1.png

LICENSE文件(必不可少)和README.md文件都要有,且必须和库文件放在一个目录。


创建方法:

pod spec create LHHAlertView

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

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

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

这里是博主提交的新的库,供大家参考,每次通过编辑器打开修改时引号
都会改变,需要注意,所以每次都需要重新复制正确的引号来替换变更
的,小修改可以用vim打开,这样引号就不会变了,升级版本时,需要打
tag,记得从打tag那一步开始,第一次会输入账号密码,以后会提示授
权,允许即可。每次修改后记得一定要同步到github再继续下一步操
作。
除了下面的一些资源文件导入外,还有第三方的支持,xib等的支持,详细信息请查看:https://guides.cocoapods.org/syntax/podspec.html#specification
//特别说明,里面的注释是博主为了大家知道什么意思加的,实际使用时一定要去掉
Pod::Spec.new do |s|
  s.name         = 'LHHTopScrollView'
  s.version      = '1.0.5'
  s.summary      = 'A banner for iOS.'
  s.homepage     = 'http://blog.csdn.net/codingfire/article/details/52470802'
  s.license      = "MIT"
  s.ios.deployment_target = '7.0'
  s.author       = { 'codeliu6572' => 'codeliu6572@163.com' }
  s.source       = { :git => 'https://github.com/codeliu6572/ScrollVIewBanner.git', :tag => '1.0.5' }
  s.source_files  = "LHHTopScrollView/*.{h,m}"
  s.resources = "LHHTopScrollView/*.png"
如果有多个,后面加逗号隔开如: 'UIKit', 'XXXXXX'
  s.framework  = 'UIKit'
  s.requires_arc = true
  s.dependency 'SDWebImage'
end

这里s.source的git地址看下图:

1.png

另外这里再说一个坑:

1.png

这里的单引号注意看了,是不一样的,下面的很明显能看出来和上面圈起来的不同,用上面的那种,博主试了下,打不出来,那就复制,否则报错,编辑通不过。切记!!!


4.验证编辑是否通过


pod lib lint LHHAlertView.podspec

1.png

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


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

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

5.打上tag,并提交到github


这里打tag一定要加上v,否则会出错

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

git tag 'v1.0.1'
git push --tags
tag打错了并已提交的
git tag -d xxx    //删除本地tag
接着
git push origin --delete tag xxx  //删除远程tag,然后重新打tag

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


成功后:

1.png


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


pod trunk push LHHAlertView.podspec 
//如果有警告 后面加 --allow-warnings

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


成功后截图:

1.png

7.搜索提交的库


pod search LHHAlertView

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


这里再啰嗦几句,以博主的这个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成功,不妨再试一次。

目录
相关文章
|
4天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
19 9
|
3天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
2天前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
|
4天前
|
JSON 前端开发 API
探索iOS开发之旅:打造你的第一个天气应用
【10月更文挑战第36天】在这篇文章中,我们将踏上一段激动人心的旅程,一起构建属于我们自己的iOS天气应用。通过这个实战项目,你将学习到如何从零开始搭建一个iOS应用,掌握基本的用户界面设计、网络请求处理以及数据解析等核心技能。无论你是编程新手还是希望扩展你的iOS开发技能,这个项目都将为你提供宝贵的实践经验。准备好了吗?让我们开始吧!
|
9天前
|
设计模式 前端开发 Swift
探索iOS开发:从初级到高级的旅程
【10月更文挑战第31天】在这篇文章中,我们将一起踏上iOS开发的旅程。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。我们将从基础开始,逐步深入到更高级的技术和概念。让我们一起探索iOS开发的世界吧!
|
8天前
|
存储 数据可视化 Swift
探索iOS开发之旅:从新手到专家
【10月更文挑战第33天】在这篇文章中,我们将一起踏上一场激动人心的iOS开发之旅。无论你是刚刚入门的新手,还是已经有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能。我们将从基础的iOS开发概念开始,逐步深入到更复杂的主题,如用户界面设计、数据存储和网络编程等。通过阅读这篇文章,你将获得成为一名优秀iOS开发者所需的全面技能和知识。让我们一起开始吧!
|
9天前
|
移动开发 Java Android开发
探索Android与iOS开发的差异性与互联性
【10月更文挑战第32天】在移动开发的大潮中,Android和iOS两大平台各领风骚。本文将深入浅出地探讨这两个平台的开发差异,并通过实际代码示例,展示如何在各自平台上实现相似的功能。我们将从开发环境、编程语言、用户界面设计、性能优化等多个角度进行对比分析,旨在为开发者提供跨平台开发的实用指南。
29 0
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
109 1
|
1月前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
|
1月前
|
搜索推荐 IDE API
打造个性化天气应用:iOS开发之旅
【9月更文挑战第35天】在这篇文章中,我们将一起踏上iOS开发的旅程,通过创建一个个性化的天气应用来探索Swift编程语言的魅力和iOS平台的强大功能。无论你是编程新手还是希望扩展你的技能集,这个项目都将为你提供实战经验,帮助你理解从构思到实现一个应用的全过程。让我们开始吧,构建你自己的天气应用,探索更多可能!
62 1