您的位置:首页 > 移动开发 > IOS开发

iOS基础- Framework的CocoaPods制作

2016-10-21 11:42 323 查看
1.Cocoapods 使用pod trunk发布程序

2.Framework的CocoaPods制作

一、创建自己的github仓库

CocoaPods都托管在github上(官方链接为:https://github.com/CocoaPods),所有的Pods依赖库也都依赖github,因此第一步我们需要创建一个属于自己的github仓库。

仓库创建界面如下图:



说明:

Repository name 仓库名称,这里写成WZMarqueeView,必填的;

Description 仓库的描述信息,可选的;

仓库的公开性 这里只能选Public,一个是因为Private是要money的,再一个Private别人看不到还共享个毛;

是否创建一个默认的README文件 一个完整地仓库,都需要README说明文档,建议选上。当然不嫌麻烦的话你也可以后面再手动创建一个;

是否添加.gitignore文件 .gitignore文件里面记录了若干中文件类型,凡是该文件包含的文件类型,git都不会将其纳入到版本管理中。是否选择看个人需要;

license类型 正规的仓库都应该有一个license文件,Pods依赖库对这个文件的要求更严,是必须要有的。因此最好在这里让github创建一个,也可以自己后续再创建。我使用的license类型是MIT。

上面的各项都填写完毕后,点击Create repository按钮即可,创建成功地界面如图:



到这,仓库创建过程就结束了。

二、clone仓库到本地

为了便于向仓库中删减内容,需要先将仓库clone到本地,操作方式有多种,推荐使用命令行:

$ cd 本地的工程目录
$ git clone https://github.com/jeikerxiao/XXFramework.git




操作完成后,github上对应的文件都会拷贝到本地。

github上仓库中的.gitignore文件是以.开头的隐藏文件,因此这里只能看到两个。 后续我们的所有文件增、删、改都在这个目录下进行。

三、向本地git仓库中添加创建Pods依赖库所需文件

注意:以下描述的文件都要放在步骤二clone到本地的git仓库的根目录下面。

1、后缀为.podspec文件

该文件为Pods依赖库的描述文件,每个Pods依赖库必须有且仅有那么一个描述文件。文件名称要和我们想创建的依赖库名称保持一致,我的XXFraemwork依赖库对应的文件名为XXFraemwork.podspec。

XXFraemwork.podspec:

Pod::Spec.new do |s|
s.name             = "XXFramework"
s.version          = "1.0.0"
s.summary          = "A marquee view used on iOS."
s.description      = <<-DESC
It is a marquee view used on iOS, which implement by Objective-C.
DESC
s.homepage         = "https://github.com/jeikerxiao/XXFramework"
# s.screenshots      = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license          = 'MIT'
s.author           = { "jeikerxiao" => "jeiker@126.com" }
s.source           = { :git => "https://github.com/jeikerxiao/XXFramework.git", :tag => s.version }
# s.social_media_url = 'https://twitter.com/NAME'

s.platform     = :ios
# s.ios.deployment_target = '5.0'
# s.osx.deployment_target = '10.7'
s.requires_arc = true

#s.source_files = 'WZMarqueeView/*'
# s.resources = 'Assets'

# s.ios.exclude_files = 'Classes/osx'
# s.osx.exclude_files = 'Classes/ios'
# s.public_header_files = 'Classes/**/*.h'
s.vendored_frameworks = 'Framework.framework'
s.frameworks = 'Foundation'

end


文件说明:

该文件是ruby文件,里面的条目都很容易知道含义。

其中需要说明的又几个参数:

s.license Pods依赖库使用的license类型,大家填上自己对应的选择即可。

s.source_files 表示源文件的路径,注意这个路径是相对podspec文件而言的。

s.frameworks 需要用到的frameworks,不需要加.frameworks后缀。

1.2 如何创建podspec文件 大家创建自己的podspec文件可以有两个途径:

复制我的podspec文件然后修改对应的参数,推荐使用这种方式。

执行以下创建命令:

$ pod spec create XXFramework


也会创建名为XXFramework.podspec的文件。但是打开创建完的文件你就会发现里面的东西太多了,很多都是我们不需要的。

2、LICENSE文件

CocoaPods强制要求所有的Pods依赖库都必须有license文件,否则验证不会通过。在创建github仓库的时候,我已经选择了MIT类型的license。

3、主类文件

这里我是添加的Framework.framework库文件(或编写的源代码,这里是我之前生成的静态库文件)

创建Pods依赖库就是为了方便别人使用我们的成果.

4、demo工程

为了快速地教会别人使用我们的Pods依赖库,通常需要提供一个demo工程。我这里没有添加,不过正常项目中强烈建议添加。

5、README.md

使用github的人应该都熟悉这个文件,它是一个成功github仓库必不可少的一部分,使用的是markdown标记语言,用于对仓库的详细说明。

以上所说的5个是创建Pods依赖库所需最基础的文件,其中1、2、3是必需的,4、5是可选但强烈推荐创建的。

我项目中最后的文件结构:



四、提交修改文件到github

1. 提交代码到Github

接着 把修改好的文件push到github上去

$ git add XXFramework.podspec

$ git commit -am "add XXFramework.podspec file”

$ git push -u origin master


GitHub上最后看到的文件结构为:



2.为提交的代码打上tag

cd进入项目目录,进去后输入

$ git tag '1.0.0'
$ git push --tags
$ git push origin master


给项目加入一个tag。以便pod能自动识别,不然后面会有坑。

五、验证编写的podspec文件

使用命令来验证编写的podspec文件是否正确:

$ pod lib lint


$ pod spec lint XXFramework.podspec


如果一切正常,这条命令执行完后会出现下面的输出:

-> XXFramework (1.0.0)

XXFramework passed validation.


到此,pod验证就结束了。 需要说明的是,在执行pod验证命令的时候,打印出了任何warning或者error信息,验证都会失败!如果验证出现异常,打印的信息会很详细,大家可以根据对应提示做出修改。

六、使用Trunk服务提交到Cocoapod官方在Github的specs

在你本地,前往~/.cocoapods/repos/master/Specs,你会看到cocoapod所有公有的开源库配置,这个通过cocoapod官方在github的specs来管理,地址为https://github.com/CocoaPods/Specs

说到这里,你会想把这个库fork分支下来,clone到你本地,把自己的Test.podspec加入,然后add、commit、 push,最后在github上pull request来和官方的主分支合并,可是你会发现请求马上被自动关闭。为什么呢?

虽然一开始使用GitHub Pull Requests来整理所有公共pods效果很好。但是,随着Pod数量的增加,这个工作对于spec维护人员Keith Smiley来说变得十分繁杂。甚至一些没有通过$ pod lint的spec也被提交上来,造成repo无法build。

CocoaPods 0.33中加入了Trunk服务。CocoaPods Trunk服务的引入,解决了很多类似的问题。CocoaPods作为一个集中式的服务,使得分析和统计平台数据变得十分方便。

下面来说说怎么发布CocoaPod。

1.注册Trunk服务

要想使用Trunk服务,首先你需要注册自己的电脑。这很简单,只要你指明你的邮箱地址(spec文件中的)和名称即可。

注册邮箱和用户名:

$ pod trunk register XXX@XXX.com '名字' --verbose


然后验证邮箱:



验证邮箱成功:



查看注册信息,看我们是否注册成功:

$ pod trunk me




出现上图类似信息表示注册成功了。

2.提交cocoa pods

$ pod trunk push XXFramework.podspec


提交成功:



3.验证下提交结果

使用下面命令更新本地Spec库:

$ pod repo update


更新下更新本地缓存的Spec库,再去search就能看到了:

$ pod search XXFramework


常见错误

1.swift-version问题

[!] 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`.


解决方法:

$ echo "2.3" > .swift-version


2.警告问题

[!] The spec did not pass validation, due to 3 warnings (but you can use `--allow-warnings` to ignore them).


解决方法:

$ pod trunk push XXPickerView.podspec --allow-warnings
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios github 框架