[关闭]
@originxp 2016-10-26T11:06:43.000000Z 字数 3294 阅读 807

cocoapods private pods(私有库)


前言

参考过很多大神的文章,但是当自己去实践的时候,还是很多步骤走不通,很多细节上的问题文章中并没有列举出来,这里写出来下我遇到的问题和解决的方法.阅读此文章前请先安装cocoapods

(1)创建并设置私有Spec Repo

关于 spec repo 文件,它是一个Pods的索引,可以查看系统master的私有spec repo,位置:~/.cocoapods/repos/master/Specs,我们需要创建一个类似master的私有spec repo,可以fork官方的repo,也可以自己建立.建议自己建立,下面讲讲自己建立的流程

1.1创建个人git仓库

可以使用GitHub,可以使用Coding,也可以使用自己搭建的服务器,建立项目仓库
获取远程路径,例如http://gitlab.91jkys.com/IOS/MANetwork.git

1.2创建spec repo

  1. $ pod repo add MASpecs http://gitlab.91jkys.com/IOS/MANetwork.git

podrepo

创建成功后你可以在 :~/.cocoapods/repos/中看到自己创建的repo spec

repoCatalogue

(2)创建pod项目工程文件

这里使用cocoapods官方提供的例子进行创建Using Pod Lib Create

  1. $ pod lib create MANetwork

运行命令后将回答五个问题

podlibcreate

  1. 这里可能会出现 pod install错误 建议cocoapods升级到最新版本
  2. 这步骤为非必要过程,如果上一步<**执行成功**>后,<**可跳过**>这步
  3. 1.升级到pre-release version(Terminal输入)
  4. $ sudo gem install cocoapods --pre
  5. 升级完成后在执行
  6. $ pod install
  7. 2.如果升级后pod install出现索引错误之类可以移除
  8. $ pod repo remove master
  9. $ pod install

create 执行成功后,打开刚才创建项目所在路径,可以看到目录中有个Example文件夹,其中就是项目demo,进行build,测试无误后推送到远端的仓库

  1. $ cd MANetwork/
  2. $ git add .
  3. $ git commit -s -m "create lib"
  4. $ git remote add origin http://gitlab.91jkys.com/IOS/MANetwork.git
  5. $ git push origin master

podspec需要进行版本管理,需要打上一个tag

  1. $ git tag -m "first commit" 0.1.0
  2. $ git push --tags

代码推送成功后,把你需要封装的模块代码放入~ MANetwork/Classes中,替换掉ReplaceMe.m文件

fileHM

然后开始配置podspec文件(podspec文件使用sublime等工具打开选择ruby语言将高亮)

  1. Pod::Spec.new do |s|
  2. s.name = 'MANetwork' #名称
  3. s.version = '0.1.0' #版本号
  4. s.summary = 'kangsheng app public network' #简短介绍, 下面是详细介绍
  5. s.description = <<-DESC
  6. kangsheng app public network library
  7. DESC
  8. s.homepage = 'http://www.91jkys.com' #个人主页
  9. #s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  10. s.license = { :type => 'MIT', :file => 'LICENSE' } #开源协议
  11. s.author = { 'originxp' => 'http://www.91jkys.com' } #个人信息
  12. s.source = { :git => 'http://gitlab.91jkys.com/IOS/MANetwork.git', :tag => s.version.to_s } #源地址
  13. #s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
  14. s.platform = :ios, "7.0" #支持的平台及版本
  15. s.requires_arc = true #是否使用ARC,如果指定具体文件,则具体问题使用ARC
  16. s.source_files = 'MANetwork/Classes/**/*' #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
  17. s.resource_bundles = {
  18. 'MANetwork' => ['MANetwork/Assets/*.png']
  19. } #资源文件地址
  20. #s.public_header_files = 'Pod/Classes/**/*.h' #公开头文件地址
  21. s.frameworks = 'UIKit' #所需的framework,多个用逗号隔开
  22. s.dependency 'AFNetworking', '~> 3.1.0' #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
  23. end

编辑完成podspec文件后,需要验证一下这个文件是否可用,执行下面命令 (命令执行后遇到warning和error的需要按照提示清除)

  1. $ pod lib lint

podlibsuccess

修改 podspec文件 或者 更新 "/Classes" "/Assets"里面的文件时 需要进入项目Example文件夹中 执行 pod install 已方便本地测试

(3)本地测试podspec文件

我们需要创建一个新的项目(命名Example),在这个项目podfile文件中直接指定刚才创建编辑好的podspec文件,看是否可用. 在podfile文件中编辑

  1. source 'https://github.com/CocoaPods/Specs.git'
  2. platform :ios, '7.0'
  3. use_frameworks!
  4. target :'Example' do
  5. pod 'MANetwork', :path => '/Users/Ixp/iOS/KangMengApp/MANetwork'
  6. project 'Example.xcodeproj'
  7. end

编辑完podfile文件后,执行pod install 并进行文件导入引用测试是否 可以使用

(4)向spec repo提交podspec

提交前必须确定podspec验证无误(最好删掉无用注释).向我们的私有spec repo提交podspec命令

  1. $ pod repo push MASpecs MANetwork.podspec

podpush

注:

--allow-warnings (无视所有警告)
--use-libraries  (使用framework)

提交完成spec repo后可以在~/.cocoapods/repos/MASpecs目录中可以看到最近提交的一个版本

如果成功走到这一步,这个组件库我们已经制作成功了,接下来使用

  1. $ pod search MANetwork

找到我们最近的库
podsearch

(5)配置profile获取组件库

服务器获取

  1. source 'https://github.com/CocoaPods/Specs.git'
  2. source 'http://gitlab.91jkys.com/IOS/MANetwork.git' #private pod server address
  3. platform :ios, '7.0'
  4. use_frameworks!
  5. target :'Example' do
  6. pod 'PodTestLibrary','~>0.1.0', source: 'http://gitlab.91jkys.com/IOS/MANetwork.git'
  7. project 'Example.xcodeproj'
  8. end

后期将提供如何更新cocoapods组件库和如何添加到cocoapods官网,敬请期待!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注