美文网首页
cocoaPods管理

cocoaPods管理

作者: 哥只是个菜鸟 | 来源:发表于2021-02-09 16:30 被阅读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
    • 根据Podfile或者Podfile.lock用于安装第三方库,第一次安装会安装指定的版本或者最新版本,在Podfile.lock中锁定列出的那些库,之后的执行也仅仅只是去下载Podfile.lock中指定的版本,并不会去检查最新的版本。
    pod install
    
    • 当你想要更新pod库的版本时才使用pod update;它不管Podfile.lock指定的版本号, 都会读取最新的的版本信息去下载安装,然后更新Podfile.lock的版本号
    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
    
    • 生成工程


      image.png
    • 设置.podspec文件,要注意s.source_files文件的路径,将工具类代码拷贝到Classes目录下

    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的信息 且引入类库之后,需要更新提交到Github上,不然会验证上一次提交的信息

    三,验证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
    

    六,更新库版本

    • 修改版本号


      image.png
    • 修改tag
    git tag 1.0.1
    
    git push orgin 1.0.1
    
    • 或者github修改tag


      image.png
    • 添加或者更改文件,记得再执行pod install,podsepc文件source路径中的:commit => "2dfc6924c160d7222571330fb15eb20fa3974a1b" 也要保持最新提交,否则cocoapods更新上去会找不到代码,后面发现这个commit去掉也可以提交成功了,默认是最新提交了,不知道为啥😄

    • 接着上面第三步操作就👌🏻了

    相关文章

      网友评论

          本文标题:cocoaPods管理

          本文链接:https://www.haomeiwen.com/subject/caqemktx.html