cocoaPods管理

2021-02-09  本文已影响0人  哥只是个菜鸟
主要是方便管理引进的第三方SDK,一般都需要依赖一些系统的库,全部放在Build Phases里面就比较难管理,到后面会越来越多,而且还不敢随意删除,怕引起别的问题,所以每一个SDK都有自己的引用库独立的放在各自Pods里面就很方便。

1.创建pod本地库

//首先cd到自己的工程目录下面

cd /Users/wangjian/Desktop/demo 

//pod init 初始化可以自动创建一个podfile,如果本身即是pod的管理那就不需要了

pod init

2.直接在工程目录下面创建podspec文件

pod spec create xxxSDK  //SDK的名字
image.png
image.png

3.创建成功之后,打开编辑podspec文件,可以用文本编辑器打开,后期生成workspace就可以直接在xcode打开编辑,一些注释信息可以不要,剩下如下信息:

Pod::Spec.new do |spec|
  spec.name         = "xxxSDK"
  spec.version      = "2.15.0"
  spec.summary      = "A short description of xxxSDK."
  spec.description  = <<-DESC
  ios sdk 哈哈哈啊哈
                   DESC

  spec.homepage     = "https://xxxSDK"
  spec.license      = { :type => 'LGPL', :text => "Beijing NetworkBench Inc.©2007-2020 All rights reserved." }

  spec.author             = { "王健" => "2576175431@qq.com" }

  spec.platform     = :iOS
  spec.platform     = :ios, "7.0"

  spec.source       = { :git => "xxxSDK的gitlab地址", :tag => "#{spec.version}" }

  spec.libraries = 'z', 'c++', 'resolv'//依赖的系统.tbd
  spec.frameworks = 'WebKit', 'Security', 'CoreTelephony', 'SystemConfiguration', 'JavaScriptCore', 'CoreGraphics', 'QuartzCore', 'CFNetwork'//依赖的系统.frameworks
  spec.vendored_frameworks = 'xxxSDK.framework'//
  
end

4.Podfile里面填写本地pod路径

pod 'XXXSDK', :path => './LocalPods/XXXSDK'
image.png

5.进行pod验证

pod lib lint

6.最后拉取本地库

pod install --verbose --no-repo-update
image.png
pod install
pod update

inhibit_all_warnings! # 消除第三方库警告
pod 'AMapLocation' 安装最新版本
pod 'AMapLocation' , '~> 1.0' 安装>=1.0<2.0的版本
pod 'AMapLocation' , '1.0' 指定版本

1. 一般情况下, 每个人从共享库把项目下载下来之后, 都会执行pod install命令安装,而不是选择 pod update,这样是为了保证大家使用的第三方框架版本一致。如果以后大家需要统一升级第三方框架, 那么每个人在执行 pod update
2.pod install --repo-update检查框架有没有新版本发布
3.pod install --no-repo-update跳过检查框架有没有新版本发布

提交到cocoapods记录

一,首先在github上面新建仓库拿到git地址,设置tag重要
image.png
二,基于cocoapods 自动创建工程
pod lib create 项目名
# 你想使用哪个平台?
1、What platform do you want to use?? [ iOS / macOS ]
iOS
# 库语言选择?
2、What language do you want to use?? [ Swift / ObjC ]
ObjC
# 是否需要一个demo工程,用于调试Pod?
3、Would you like include a demo application with your library? [ Yes / No ]
Yes
# 你要使用哪个测试框架?
4、Which testing frameworks will you use? [ Specta / Kiwi / None ]
None
# 是否要UI测试?
5、Would you like to do view based testing? [ Yes / No ]
NO
# 类名前缀?
6、What is your class prefix?
XK
Pod::Spec.new do |s|
  s.name             = 'CrashHook'
  s.version          = '1.0.0'
  s.summary          = 'A short description of CrashHook.'
  s.homepage         = 'https://github.com/wangjian201314/CrashHook'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'wangjian' => '2576175431@qq.com' }
  s.source           = { :git => 'https://github.com/wangjian201314/CrashHook.git', :tag => s.version.to_s, :commit => "2dfc6924c160d7222571330fb15eb20fa3974a1b" }
  s.ios.deployment_target = '9.0'
  s.source_files = "CrashHook/Classes/*.{h,m}"
end
image.png

三,验证podspec

pod lib lint --allow-warnings
pod spec lint --allow-warnings
- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file
open /Users/用户名/Library/Caches/CocoaPods/Pods/External/项目名

将工具类拷贝到目录下面,和s.source_files路径一致


image.png

再重复上面的步骤,如果还不行就设置如下,比默认设置的多了一个
:commit => "2dfc6924c160d7222571330fb15eb20fa3974a1b" ,保持最新提交

s.source           = { :git => 'https://github.com/wangjian201314/CrashHook.git', :tag => s.version.to_s, :commit => "2dfc6924c160d7222571330fb15eb20fa3974a1b" }

四,推送podspec到远程仓库

pod trunk register 邮箱地址 '用户名' --verbose

pod trunk me
pod trunk push xxx.podspec --allow-warnings 
image.png

五,检查项目podspec是否上传成功

pod search xxxx

搜不到的解决方法如下:(后面发现项目中pod install 可以安装,但是就是搜索不到,别担心,只是cocoapods库还没更新上去,等第二天再搜索就有了)

需要更新本地的repo
执行命令 pod setup 或者 删除本地的搜索索引 rm ~/Library/Caches/CocoaPods/search_index.json
,再次执行 pod search XKCocoapods

六,更新库版本

git tag 1.0.1
git push orgin 1.0.1
上一篇 下一篇

猜你喜欢

热点阅读