首页>>百科常识

如何将自己的SDK用CocoaPods管理

今天宠物迷的小编给各位宠物饲养爱好者分享podfile设置参数的宠物知识,其中也会对如何将自己的SDK用CocoaPods管理(ios cocoapods使用)进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!

如何将自己的SDK用CocoaPods管理

创建自己项目的Podspec描述文件
下面我会通过一个名为HUPhotoBrowser的项目来讲解一下整个过程。
项目发布到github后,需要打上tag。之后我们在工程根目录中初始化一个Podspec文件:
pod spec create HUPhotoBrowser

该命令将在本目录产生一个名为HUPhotoBrowser.podspec文件。用编辑器打开该文件,里面已经有非常丰富的说明文档。下面介绍如何声明第三方库的代码目录和资源目录,还有该第三方库所依赖ios核心框架和第三方库。这是我的podspec文件:

编辑好podspec文件后就可以将该podspec文件保存到本机的~/***coapods/repos/master/Specs目录中仅供自己使用,也可以将其提交到CocoaPods/Specs代码库中。下面我们先将其保存到本机中:

下面可以看一下是否可以通过搜索找到该库:

同样在需要依赖于HUPhotoBrowser这个库的项目,可以将下列添加到项目的Podfile文件中
pod 'HUPhotoBrowser', '~0.0.2'

保存文件,并用pod install安装HUPhotoBrowser库。
通过以上步骤创建Pod库还只能供自己使用,下面会继续讲解如何将其提交到CocoaPods/Specs代码库中,让其他人也可以通过pod install安装我们的开源库。
CocoaPods Trunk发布自己的Pods
在cocoapods使用了trunk之后,CocoaPods 需要0.33以上版本,用 pod --version查看版本,如果版本低,需要更新。
注册Trunk
$ pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'

大家在注册时需要替换成自己的邮箱和用户名,一切顺利的话就会受到一份邮件,点击邮件中的链接后验证一下:

pod trunk me

至此我们整个制作自己的开源库的过程就完成了,以后有新版本只需要修改工程根目录下的podspec文件就行了,然后重新执行pod trunk push命令。

如何将自己的SDK用CocoaPods管理

大牛们都是怎么用cocoapods的

使用CocoaPods的第一步,是在当前项目下,新建一个Podfile文件:touch Podfile
然后利用vim打开Podfile文件编辑,加入你想要使用的类库,格式如下:
platform :ios
pod 'Reachability', '3.1.0'

platform:ios, '6.0'
pod 'JSONKit','1.4'
pod 'AFNetworking', '~> 2.3.1'

如果是拷贝的别人的项目,或是一个很久没打开过的项目,可能需要先执行一下:
pod update

最后一步,执行命令:
pod install

当终端出现类似下面的提示后,就代表成功了:
[!] From now on use `Sample0814.xcworkspace`.

这个时候会看到项目文件夹下多了一个文件xxx.xcworkspace,以后要通过这个文件打开项目,老项目文件xxx.xcodeproj不再使用。

P.s.1 上面的每一步都有可能出现问题,但大部分问题都是因为大局域网的原因,用一个网速稳定的境外VPN可破。

P.s.2 如果上面因为权限问题安装失败,必须每次都要删除
rm -rf /Users/loginnanme/Library/Caches/CocoaPods/

因为这个缓存中会存下你的github的东西,造成每次都调用上次权限问题的缓存。

P.s.3 关于Podfile文件编辑时,第三方库版本号的各种写法:

pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本
pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本
pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0
pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0′ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

如何在 Swift 中使用 Alamofire 进行网络编程

  Alamofire是AFNetworking的作者编写的在Swift中使用的网络类库,使用起来逻辑清晰明了,也很容易上手.
当然AFNetworking在Swift中依然是可以使用的,不过我不推荐那么做.

  安装Alamofire

  可以通过Cocoapods的方式进行安装,podfile配置如下:
  platform :ios, '8.0'
use_frameworks!
target '你的工程名称' do
pod 'Alamofire', '~> 3.3.0'
end
然后到终端执行pod install就可以了,使用之前先import一下import Alamofire

  基本使用,请求数据

  普通数据请求
  //我把请求放在了button的点击事件里面
@IBAction func onBtnClick(sender: UIButton) {
//这里我使用一个查询手机号码归属地的接口为例,
Alamofire.request(.GET,, requestURL,parameters: ["phone":phoneNumber],encoding: .URL,headers: ["apix-key":apiKey]).responseJSON { (response) in
//是否请求成功
// if response.result.isSuccess{}
if let jsonValue = response.result.value {
print(jsonValue)
}
}
}
Alamofire.request(Method, URLString, parameters, encoding, headers)
//这是一个完整的Alamofire.Request的初始化方法,其中:
//Method,请求方式,如:.GET .POST .DELETE等
//URLString,请求接口
//parameters,请求参数,字典类型,如果是GET方法请求数据,传入的参数将会被转换为key1=value1&key2=value2的形式
//encoding,编码方式,Alamofire提供一个枚举来表示请求所用编码,如.URL,.JSON,那么GET方式请求数据一般使用.URL编码方式
//headers,请求头,对应于在NSURLRequest中的属性allHTTPHeaderFields
这里是一个普通的GET请求,传入的参数Alamofire自动以key=value&kay2=value2的形式拼接,如果请求是POST或者需要把请求参数已JSON的形=形式传输的话,encoding参数传入.JSON即可
responseJSON闭包中我们得到的参数是一个结构体,里面分别包含了此次请求的request对象,返回数据,请求结果等.
响应结果控制
Alamofire.request()返回的是一个Request对象,Request对象的参数都是本次请求中附带的参数,responseJSON是对返回结果的控制,针对返回结果为JSON数据的情况,Alamofire中还提供了处理其他返回结果地方法:
response()
responseData()//二进制数据
responseString(encoding: NSStringEncoding)//字符串结果
responseJSON(options:NSJSONReadingOptions)//JSON数据
responsePropertyList(options: NSPropertyListReadOptions)//属性列表
///响应方式应该试服务器返回结果而定,如果服务器给你的是JSON数据那么就用responseJSON,如果是其他数据那么也使用对应的
  使用validate()验证是否请求成功

  Alamofire.request(.GET, requestURL,parameters:["phone":phoneNumber],encoding: .URL,headers: ["apix-key":apiKey]).validate().responseJSON { (response) in
//是否请求成功
switch response.result{
case .Success:
print("数据请求成功")
case .Failure(let error):
print(error)
}
}
validate()将确认响应的状态编码控制在可接受的范围200-299内,如果验证失败,那么在响应的处理方法内部将会出现一个错误.
  上传数据

  一个简单地上传文件的小栗子
let fileURL = NSBundle.mainBundle().URLForResource("1", withExtension: "jpg")
Alamofire.upload(.POST, uploadURL, file: fileURL!)
//这里的前面两个参数分别是连接方式,请求接口,第三个参数就是需要上传的文件的本地URL
当然也可以使用NSData的形式上传:

  Alamofire.upload(.POST, uploadURL, data: "upload Data".dataUsingEncoding(NSUTF8StringEncoding)!)

其他的还有使用MultipartFormData等,这里就不做介绍了.
上传附件时监测进度
Alamofire.upload(.POST, uploadURL, data: "upload Data".dataUsingEncoding(NSUTF8StringEncoding)!)****gress { (written, totalWritten, totalNeedsToWrite) in
print("written bytes \(written) totalWritten \(totalWritten) totalBytes\(totalNeedsToWrite)")
///每次上传一部分数据就会回调此闭包.
}

  同样的,不管是上传还是请求数据或是下载文件,我们都可以得到服务器的响应,所以上传也是可以使用response系列方法的:
  Alamofire.upload(.POST, uploadURL, data: "upload Data test ".dataUsingEncoding(NSUTF8StringEncoding)!)****gress { (written, totalWritten, totalNeedsToWrite) in
print("written bytes \(written) totalWritten \(totalWritten) totalBytes\(totalNeedsToWrite)")
}.responseJSON { (response) in
print(response)//服务器对本次数据上传的响应
}

  有上传就有下载,Alamofire提供Alamofire.download()方法来执行下载操作:
  ///本例中所下载的文件是在网上随便找的一张图片
Alamofire.download(.GET, "http://pic.to8to***m/attch/day_160218/20160218_d968438a2434b62ba59dH7q5KEzTS6OH.png") { (URL, response) -> NSURL in
var path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
path += "/\(response.suggestedFilename!)"
return NSURL.fileURLWithPath(path)
}

  download方法接受一个闭包,此闭包在文件下载完成后调用,我们需要在闭包中返回文件下载完毕之后,保存此文件的资源路径,你也可以单独拆分一个函数,然后传入函数名即可
如果觉得这样比较麻烦或者没有必要在闭包中那些代码,我们可以使用默认的资源路径:
  ///这里使用的是系统的Document路径
let destina = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory, domain: .UserDomainMask)

Alamofire.download(.GET, "http://pic.to8to***m/attch/day_160218/20160218_d968438a2434b62ba59dH7q5KEzTS6OH.png",destination: destina)

  同样的,下载文件也可以检测下载进度

//在此实现检测下载进度逻辑
}

  如果需要实现断点续传来下载文件的话,实现起来也是比较简单,首先,Alamofire提供了对应的download方法:
  Alamofire.download(resumeData: NSData() , destination: destina)

  第一个参数应该传入已经下载得到的数据,就可以在已经下载数据的基础上继续下载,那么我们需要做的事就只有在下载出现错误或者暂停的时候把已下载数据保存起来就可以了,大致的实现思路就是这样,我这里就不作演示了.



  

pod可用project打开吗

安装**方法
1、安装之前将本机日期改为未来的某个日期,然后双击安装,按照指定流程操作即可
2、如果安装前忘记改日期,则只能通过修改plist的方式进行**
a.显示系统隐藏文件,打开终端,输入,回车

defaults write ~/Library/Preferences/com.apple.finder AppleShowAllFiles -bool true

b.重启Finder 按住Command+Option+esc打开对话框,选中Finder,点击重新开启

c.在Finder中前往~/Library/Preferences/ByHost,找到其中的GlobalPreferences.…….plist文件,删掉包含有"com.zennaware.Cornerstone"字样的这一行,即清除了安装记录
d.清除安装记录之后,如果这时电脑中没有CornerStone,则按照1步骤进行安装,如果已经安装,则卸载后按照1过程再次安装,即得到永久**版
三、添加repository
点击左侧栏中REPOSITORY那一栏的+选择添加repository

如果你公司的给你的repository地址为svn://开头,则选择SVN Server,如果为http://或https://开头,则选择HTTP Server
1.SVN配置
假设你公司svn地址为:svn://192.168.1.111/svn/ios,用户名:svnserver,密码:123456

1:填写主机地址
2:如果你的主机地址中有端口号,如为192.168.1.111:8080,则2中填写8080
3:填写主机后面的路径
4:自动生成,如果你填写完之后不是这种svn://用户名@主机地址:端口号/路径的格式,则说明填写有误
5:也会自动生成,将会在侧边栏显示为5中的名称,可以自定义名称
6:用户名
7:密码
以上信息填写无误之后选择添加即可,如遇添加失败,信息填写无误,则联系管理员,查看地址,用户名,密码是否正确
2.HTTP配置
与svn一样,只有一个地方需要注意,如果地址是https://,则需修改下图所示位置的选项为HTTPS,否则也会添加失败

四、使用简介
1.上传项目到repository
可以直接拖动到repository的子文件夹中,或是选择软件上方的Import按钮上传,会弹出选项填写所在位置及名称,然后选择Import即可
2.下载项目
下载分为两种:Export和Check Out,区别在于,Export后的项目不会与repository中的源文件相关联,是一个**的版本,而Check Out下来的文件会创建一个working copy,参见步骤三的第一幅图,此文件与库中源文件相关联,当有新版本(他人修改)或是本地修改(自己修改)时,working copy会显示修改数量,白色数量为他人修改数量,灰色数量为本人修改数量
所以如果你是项目中的开发人员,可以选择check out,如果只是下载查看,不希望自己的修改影响到整个项目,最好是选择Export
3.版本管理
每一次提交会创建一个新版本,在repository中会保存所有历史版本,如下图(可通过修改人及提交信息进行检索版本),所以用svn开发可以很好的控制项目出现不可解决及未知bug时代码的修复问题

svn方便了多人开发同一项目的代码合并问题,但是也有一些事项需要注意:
a)先更新后提交
在看到有新版本(即同伴已经提交代码时),先更新代码,直至working copy不再显示白色圈,然后运行代码确定可运行且功能无误之后再commit自己的代码,否则,会造成项目中出现多处冲突或bug,且很难排查原因
b)完成**功能后再提交,且务必填写提交信息
每完成一个**的功能,或解决一个bug之后再提交代码,不要连续多次重复提交,造成版本过多过杂,且提交时务必填写提交信息,交代本次完成了什么功能,方便上图中可以进行message的搜索来查看历史版本
c)冲突文件
原则上同一组开发人员最好不要在同一文件中进行操作,但有时候必须去其他文件中进行操作,或者是误操作,如果同时多人在同一文件的同一位置修改代码,后提交的人会出现版本冲突文件,一般会有三个同样名称不同后缀的文件
.mine文件:本人所做修改
两个.r0XX文件:XX为数字,数字较小的为更改前的文件,较大的为更改后的文件,在文件中会有>>>>等字样包含起来的代码,即冲突的地方,此时请和组内同事讨论或自己删除某部分修改文件后进行调试,修复文件
针对ios项目:出现某个工程或文件打不开的情况,如果为****ject文件无法打开,则选择显示包内容->用文稿打开project.pbxproj文件->搜索.mine,将.mine部分前后>>>包含起来的代码删除,工程就可以打开了,如果build时出现某个xib文件打不开的错误,则选中,用文稿打开,跟上文同样操作即可解决无法build的问题
d)新添加文件
提交时新增加的文件显示为问号状态的,请选中右击后 选择Add to Working Copy之后再commit

cocoapods pod search后 怎么cd 目录

在安装CocoaPods之前,首先要在本地安装好Ruby环境。(MAC一般自带)

cocoapods 怎么依赖svn管理的私有库

先把版本库checkout出来,把你要上传的文档放到相应的文件夹中,然后执行add操

mac10.11怎么安装cocoapods

如何下载和安装CocoaPods?
在安装CocoaPods之前,首先要在本地安装好Ruby环境。至于如何在Mac中安装好Ruby环境,请google一下,本文不再涉及。
假如你在本地已经安装好Ruby环境,那么下载和安装CocoaPods将十分简单,只需要一行命令。在Terminator(也就是终端)中输入以下命令(注意,本文所有命令都是在终端中输入并运行的。什么,你不知道什么是终端?那请小编吃饭,小编告诉你):
sudo gem install cocoapods

但是,且慢。如果你在天朝,在终端中敲入这个命令之后,会发现半天没有任何反应。原因无他,因为那堵墙阻挡了cocoapods.org。(你会问,**,这都要墙!是的,小编也纳闷。)
但是,是的,又但是(不过是个可喜的“但是”)。我们可以用淘宝的Ruby镜像来访问cocoapods。按照下面的顺序在终端中敲入依次敲入命令:
$ gem sources --remove https://rubygems.org/
//等有反应之后再敲入以下命令
$ gem sources -a http://ruby.taobao.org/

为了验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看:
$ gem sources -l

只有在终端中出现下面文字才表明你上面的命令是成功的:
*** CURRENT SOURCES ***

http://ruby.taobao.org/

上面所有的命令完成之时,在小编的终端上是这个的样子:

这时候,你再次在终端中运行:
$ sudo gem install cocoapods

等上十几秒钟,CocoaPods就可以在你本**载并且安装好了,不再需要其他设置。

如何创建私有 CocoaPods 仓库

就像Java有Maven一样,Objective-C也有自己的依赖管理工具cocoapods。 但是由于swift才出来不久, 目前很多cocoapods管理的第三方库依然是由Objective-C编写的。 为了能够在swift中使用这些类库,需要在Xcode中进行一些配置。

cocoapods怎么创建podfile文件

ruby环境安装好后,开始安装cocoapods...
1


安装成功后输入pod search AFNetworkin...
2


打开终端,输入 cd+空格 然后将项...
3


回车,输入 pod+空格+install 然后...
4


安装成功,打开项目。
5


如果使用了新的第三方库,如图,搜索之...
6


这样我们项目中就添加

本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“如何将自己的SDK用CocoaPods管理

标签:宠物爱好