iOS 自制cocoapod里的第三方

如何与cocoapod关联,在cocoapod中能搜索并引用到项目中,自定义写的第三方库。也就是:上传代码到cocoapod。
要想上传代码到cocoapod,首先,需要有一个gitlab或者github账号,并且把自己将要制作成的第三方库的代码的工程传到gitlab或者github上,此操作在名称为:“iOS ssh keys 和 mac下使用github 上传代码” 和“GitHub 使用”,的文章中,有具体阐述,其中,上传gitlab和github的步骤和方法基本一样,差别不大。

下面就拿gitlab说一下吧!
接下来的步骤基于 工程与gitlab已经建立好联系,本地的工程可以通过终端或者常用工具sourceTree,进行更新和上传修改的本地工程代码。(注意:在首次上传项目,没有任何提交节点的时候,需要对工程进行ignore操作(不然后来再ignore会有很多问题),这在sourceTree里面可以配置,如下的地方:ignore的具体内容可以直接在gitHub上搜索gitignore,里面有很多类型开发语言的ignore文件,找到oc语言的,就可以了)

001.png

话题回来,接着说,比如已经搞好的:本地项目,工程名字wgjPublicTest, 在gitlab上创建的用于储存publicTest工程的project的名字为publicOne。这只是可以进行上传和拉取等一些代码的线上和本地的操作,还没有和cocoapod产生关系,那么下面就开始让他们发生点关系吧:

  1. 终端进入本地工程,pod spec create wgjPublicTest,操作后,本地的工程文件里面出现:wgjPublicTest.podspec,编写 podspec 文件,可以使用Vim ,或者Xcode , Sublime也可以,这是一个Ruby文件。此文件的一些内容已经自动生成,我们针对这个文件需要做一些修改。我用Sublime工具打开,文件格式在如下图中进行选择,选择ruby。


    01.png

文件中:
Pod::Spec.new do |s|
# 名称 使用的时候pod search [name]
s.name = "XWSwiftRefreshT"
# 代码库的版本
s.version = "0.1.2"
# 简介
s.summary = "The easiest way to use pull-to-refresh with Swift2.0 program language."
# 主页
s.homepage = "https://github.com/boyXiong/XWSwiftRefreshT"
# 许可证书类型,要和仓库的LICENSE 的类型一致
s.license = "MIT"
# 作者名称 和 邮箱
s.author = { "boyXiong" => "relv@qq.com" }
# 作者主页
s.social_media_url = "http://blog.csdn.net/boyXiong.com/"
# 代码库最低支持的版本
s.platform = :ios, "8.0"
# 代码的Clone 地址 和 tag 版本
s.source = { :git => "https://github.com/boyXiong/XWSwiftRefreshT.git", :tag => "0.1.2" }
# 如果使用pod 需要导入哪些资源
s.source_files = "XWSwiftRefreshT/*/.{swift}"
s.resources = "XWSwiftRefreshT/Icon/xw_icon.bundle"
# 框架是否使用的ARC
s.requires_arc = true

    end

其中license,如果后来本地验证的时候,报错的话,可以随便建一个git touch, 在里面随便写点内容。

下面有份示例:

033.png

022.png

011.png
  1. 编写完成后,先进行本地检查
    pod lib lint wgjPublicTest.podspec;如果报错,就是.podspec文件里面东西没有写对,进行修改即可。

  2. 工程里面.podspec文件完成之后,终端:pod repo ,列出pod本地的一些东西。此时发现,只有master, 这是pod 本地默认的一个,也就是平常我们使用cocoapod进行导入三方库的一些本地目录。这里需要我们建一个自己的:(Adding a repo needs a NAME and a URL.)pod repo add wgjT https://wgj@gitlab.com/wgj/WgjPublic.git,其中,wgjT就是在本地pod目录中和master并列的一个文件夹,链接中的WgjPublic是自己在gitlab上建立的一个project,这个project就是以后盛放自定义第三方工程们(就是只有几k大小的那些.podspec文件)的一个project。这个project需要在命令执行前建的(不用初始化操作,创建空的就行,若后来pod search 不到的话,就改为权限为:public(private应该也是可以的),再试,若改不了权限,删除,重新创建),而wgjT则是执行命令后,自动生成的。
    pod repo 一下,看一下列表,发现有了。

  3. 接下来需要做什么呢?推给pod远程,进入带有wgjPublicTest.podspec的工程的目录,终端:pod repo push wgjT wgjPublicTest.podspec,此时,也许会发现错误,需要注意:1. 利用sourceTree,把本地wgjPublicTest工程修改的东西提交,其中就包括.podspec文件;提交完成之后,需要打一个标签,因为cocoapod版本控制的一些操作和这个标签有关。2.注意.podspec文件里面的 homepage 和 source 的地址有没有写错,针对此文章示例需写的是publicOne的地址路径。

  4. 此时,就差不多完成了,pod search wgjPublic,找一下看有没有,此时发现有了,好激动。不要太高兴,建一个项目,测试一下能不能正常导入自己制作的第三方,握草,发现能搜索出来,但是不能导入测试项目,什么原因呢,可能是:缺少source这个东西,示例:
    source 'https://wgj@gitlab.com/wgj/WgjPublic.git'
    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '7.0'
    target 'PodTest002' do
    pod 'AFNetworking', '3.1.0'
    pod 'wgjPublicTest', '0.0.1'
    end
    到此,终于可以了!

注:如果不想source引入或者是自己能search到,但是别人search 不到,那就需要是直接发到cocoapod的master主干了(pod trunk push **. podspec,没有发布到cocoapod主干master),这样的话,在创建过程中,本地的pod库目录中也就不用建自己的文件夹,而是用的master。

wgjT和WgjPublic分别是本地pod里面的一个文件夹和gitlab上一个存储第三方的project,这两个其实是对应的,取相同的名字比较好。这个类似于一个仓,这个仓可以被其他开发者用,例如,其他的开发者可以在本地pod中添加这个仓:pod repo add DFSpecs https://wgj@gitlab.com/chenrj/DFSpecs.git,---pod lib lint wgj_GitlabTest01.podspec--- pod repo push DFSpecs wgj_GitlabTest01.podspec,当然,这个需要权限,需要被加入成员。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容