美文网首页
SDK上传到Cocoapods

SDK上传到Cocoapods

作者: Jabne | 来源:发表于2022-02-24 10:35 被阅读0次

    写在前面

    Cocoapod可以管理SDK的代码进行组件化开发也可以将开发完成的SDK托管到Cocoapods,采用pod'xxxSDK'的方式自动集成SDK,本文是将开发好的SDK打包好上传到cocoapods,通过pod 'XXXSDK'的方式将SDK集成到项目中,告别手动集成,并且生成私人repo,让pod的速度向飞一样。

    一、创建仓库

    1.在github上或者码云(这里建议码云,因为码云是国内的速度快)上创建两个仓库,一个代码仓库用来存放打包好的SDK和SDK需要的资源文件,一个spec仓库负责存放podSDK需要的索引。

    两个仓库全部设为开源,需要创建完成后去管理修改,LICENSE选择MIT 截屏2022-02-23 下午8.44.10.png

    创建好如图所示 仓库截屏2022-02-23 下午8.30.17.png

    2.将存放SDK的仓库clone下来

    git clone https://gitee.com/allook/YLUISDK.git
    

    YLUISDK文件中创建Lib文件夹存放SDK,Resources文件存放资源文件,如图所示。 截屏2022-02-23 下午9.04.37.png

    二、开始创建并配置.podspec文件

    cd到YLUISDK文件中

    pod spec create YLUISDK
    

    会生成YLUISDK.podspec文件,将文件打开方式更改为Xcode,开始编辑,关于.podspec文件的语法可自行百度查看,以下配置仅适用于开发好的SDK上传到Cocoapods。

    Pod::Spec.new do |s|
    
      # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
      #
      #  These will help people to find your library, and whilst it
      #  can feel like a chore to fill in it's definitely to your advantage. The
      #  summary should be tweet-length, and the description more in depth.
      #
    
      s.name         = "YLUISDK"
      
      s.version      = "3.4.5"
      
      s.summary      = "yllan of YLUISDK."
      
      s.description  = " 这是一个短视频、小视频的SDK"
      
      s.homepage     = "https://gitee.com/JabneCode/YLUISDK"
      
      s.license      = { :type => "MIT", :file => "LICENSE" }
      
      s.author       = { "zhangbin" => "github@yilan.tv" }
      
      s.platform     = :ios, "9.0"
    
      s.source       = { :git => "https://gitee.com/JabneCode/YLUISDK.git", :tag => "3.4.5" }
      
      // 将打包好的SDK放到对应目录,pod 'YLUISDK'执行后,SDK就乖乖到pod里面去了
      s.vendored_frameworks = "Lib/YLUISDK.framework"
      
      // 表明支持的架构模式
      s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }
      
      // 这个是SDK需要的资源文件,这样写到时候会生成一个YLUISDKResource.bundel文件放到.app的包里面,这样SDK直接就能读取了。
      s.resource_bundles = {
        'YLUISDKResource' => ['Resources/*']
      }
    

    三、开始验证.podspec的合法性,并上传SDK到Cocoapods。

    每次编辑更新完.podspec文件和Lib、Resources以后和,需要做以下操作,需要注意的是这里可能没有权限进行push,需要编辑隐藏文件.git中的config文件,这样就有权限push了。 截屏2022-02-23 下午9.15.12.png

    git add .
    git commit -am "版本号之类的描述"
    git push
    git tag 3.4.5 // 这个版本号要和.podspec文件中的一一对应。
    git push --tags
    pod spec lint --skip-import-validation --allow-warnings
    

    不出意外应该会出现以下结果,如果发生错误需要仔细检查.podspec文件的内容。

    截屏2022-02-23 下午9.24.13.png

    注意:每次发布新版本都要进行以上几步。

    一切具备,开始上传SDK到Cocoapods。

    // 注册cocoapods作者
    pod trunk register 自己的邮箱 "SDK的作者"
    // 查看注册好的用户
    pod trunk me
    // cd到存放.podspec文件的YLUISDK中执行上传
    pod trunk push ./YLUISDK.podspec --skip-import-validation --allow-warnings
    

    四、开始使用

    现在就可以在自己的podfile文件中添加pod 'YLUISDK'来测试成果了。

    五、生成私人repo

    上面发布完成后,索引默认是在这个地址https://github.com/CocoaPods/Specs。本地索引会下载到~/.cocoapods/repos/master,这也是cocoapods默认的索引地址 截屏2022-02-23 下午9.38.51.png

    因为github是国外的网站,访问会很慢,所以我们需要建立一个自己的索引仓库。还记得开始建立的仓库吗。现在你需要这个仓库clone到~/.cocoapods/repos,将之前编辑好的YLUISDK.podspec文件copy到这里面。cd到这个仓库目录下然后执行

    git add .
    git commit -am "提交信息"
    git push
    // yilan-spec是你索引仓库的名字  YLUISDK.podspec是你刚才copy的文件
    pod repo push yilan-spec YLUISDK.podspec --skip-import-validation --allow-warnings
    
    截屏2022-02-24 上午9.59.56.png

    执行完成后你去~/.cocoapods/repos中查看自己创建的索引库和自己码云上创建的spec仓库就已经有当前版本的信息了。

    [图片上传中...(截屏2022-02-24 上午10.02.24.png-dfabee-1645668161718-0)] 截屏2022-02-24 上午10.02.24.png

    下面开始测试自己的仓库

    // 记得添加自己的源文件
    source 'https://gitee.com/allook/yilan-spec.git'
    pod 'YLUISDK'
    

    六、总结Cocoapods原理(个人理解)

    cocoapods是怎么将SDKpod到项目中的呢?执行pod install以后,cocoapods会根据podfile中的source(也就是.spec文件存放的仓库)去下载索引到电脑的/.cocoapods/repos文件中,让后根据索引中的SDK仓库地址去下载SDK并集成到项目中。所以Cocoapods遇到各种找不到最新版的的库或者pod不下来等问题全是本地的索引有问题,需要提示客户直接去/.cocoapods/repos中找到你自己创建的source(我这里创建的就是yilan-spec),cd到这个目录下执行git pull这样客户就能拉取到最新的索引了,在到项目中执行pod install 就能正常的pod下来我们库了。这就是为啥开头推荐大家用码云,因为码云是国内的网站,push、pull操作都很流畅,这样会打打提高工作效率,github就不好说了,即使用了VPN也可能发个版本卡半天。这就是我最近工作中的心得分享给大家,希望能帮助到一些新手开发人员少走一些弯路,欢迎大佬指正。

    相关文章

      网友评论

          本文标题:SDK上传到Cocoapods

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