@originxp
2016-10-26T11:06:43.000000Z
字数 3294
阅读 834
参考过很多大神的文章,但是当自己去实践的时候,还是很多步骤走不通,很多细节上的问题文章中并没有列举出来,这里写出来下我遇到的问题和解决的方法.阅读此文章前请先安装cocoapods
关于 spec repo
文件,它是一个Pods的索引,可以查看系统master的私有spec repo
,位置:~/.cocoapods/repos/master/Specs
,我们需要创建一个类似master的私有spec repo
,可以fork官方的repo,也可以自己建立.建议自己建立,下面讲讲自己建立的流程
可以使用GitHub,可以使用Coding,也可以使用自己搭建的服务器,建立项目仓库
获取远程路径,例如http://gitlab.91jkys.com/IOS/MANetwork.git
$ pod repo add MASpecs http://gitlab.91jkys.com/IOS/MANetwork.git
创建成功后你可以在 :~/.cocoapods/repos/
中看到自己创建的repo spec
这里使用cocoapods官方提供的例子进行创建Using Pod Lib Create
$ pod lib create MANetwork
运行命令后将回答五个问题
这里可能会出现 pod install错误 建议cocoapods升级到最新版本
这步骤为非必要过程,如果上一步<**执行成功**>后,<**可跳过**>这步
1.升级到pre-release version(Terminal输入)
$ sudo gem install cocoapods --pre
升级完成后在执行
$ pod install
2.如果升级后pod install出现索引错误之类可以移除
$ pod repo remove master
$ pod install
create 执行成功后,打开刚才创建项目所在路径,可以看到目录中有个Example
文件夹,其中就是项目demo,进行build,测试无误后推送到远端的仓库
$ cd MANetwork/
$ git add .
$ git commit -s -m "create lib"
$ git remote add origin http://gitlab.91jkys.com/IOS/MANetwork.git
$ git push origin master
podspec
需要进行版本管理,需要打上一个tag
值
$ git tag -m "first commit" 0.1.0
$ git push --tags
代码推送成功后,把你需要封装的模块代码
放入~ MANetwork/Classes
中,替换掉ReplaceMe.m
文件
然后开始配置podspec
文件(podspec文件使用sublime等工具打开选择ruby语言将高亮)
Pod::Spec.new do |s|
s.name = 'MANetwork' #名称
s.version = '0.1.0' #版本号
s.summary = 'kangsheng app public network' #简短介绍, 下面是详细介绍
s.description = <<-DESC
kangsheng app public network library
DESC
s.homepage = 'http://www.91jkys.com' #个人主页
#s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' } #开源协议
s.author = { 'originxp' => 'http://www.91jkys.com' } #个人信息
s.source = { :git => 'http://gitlab.91jkys.com/IOS/MANetwork.git', :tag => s.version.to_s } #源地址
#s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.platform = :ios, "7.0" #支持的平台及版本
s.requires_arc = true #是否使用ARC,如果指定具体文件,则具体问题使用ARC
s.source_files = 'MANetwork/Classes/**/*' #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
s.resource_bundles = {
'MANetwork' => ['MANetwork/Assets/*.png']
} #资源文件地址
#s.public_header_files = 'Pod/Classes/**/*.h' #公开头文件地址
s.frameworks = 'UIKit' #所需的framework,多个用逗号隔开
s.dependency 'AFNetworking', '~> 3.1.0' #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end
编辑完成podspec
文件后,需要验证一下这个文件是否可用,执行下面命令 (命令执行后遇到warning和error的需要按照提示清除)
$ pod lib lint
修改 podspec文件 或者 更新 "/Classes" "/Assets"里面的文件时 需要进入项目Example文件夹中 执行 pod install 已方便本地测试
我们需要创建一个新的项目(命名Example),在这个项目podfile
文件中直接指定刚才创建编辑好的podspec
文件,看是否可用. 在podfile
文件中编辑
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
use_frameworks!
target :'Example' do
pod 'MANetwork', :path => '/Users/Ixp/iOS/KangMengApp/MANetwork'
project 'Example.xcodeproj'
end
编辑完podfile
文件后,执行pod install
并进行文件导入引用测试是否 可以使用
提交前必须确定podspec
验证无误(最好删掉无用注释).向我们的私有spec repo
提交podspec
命令
$ pod repo push MASpecs MANetwork.podspec
注:
--allow-warnings (无视所有警告)
--use-libraries (使用framework)
提交完成spec repo
后可以在~/.cocoapods/repos/MASpecs
目录中可以看到最近提交的一个版本
如果成功走到这一步,这个组件库我们已经制作成功了,接下来使用
$ pod search MANetwork
找到我们最近的库
服务器获取
source 'https://github.com/CocoaPods/Specs.git'
source 'http://gitlab.91jkys.com/IOS/MANetwork.git' #private pod server address
platform :ios, '7.0'
use_frameworks!
target :'Example' do
pod 'PodTestLibrary','~>0.1.0', source: 'http://gitlab.91jkys.com/IOS/MANetwork.git'
project 'Example.xcodeproj'
end
后期将提供如何更新cocoapods组件库和如何添加到cocoapods官网,敬请期待!