美文网首页
关于上传组件的相关步骤和问题

关于上传组件的相关步骤和问题

作者: 印象苹果 | 来源:发表于2018-05-30 17:04 被阅读0次

    背景

    最近公司准备让做一些日常开发常用的组件,然后看了一些知识和文章总结了一下防止以后忘记

    概要

    • 对索引库和代码库的分析
    • 如何搭建一个索引库
    • 创建代码库并上传到索引库
    • 上传代码过程中遇到的问题

    对索引库和代码库的分析

    平常我们在开发中经常使用cocopod,明白了cocopod的工作原理也就进本明白了索引库和代码库的概念
    cocopod 是怎样帮助我们下载代码的呢?

    以'AFNetworking'为例
    • 我们在我们的Profile文件中pod 'AFNetworking'
    • pod就会在路径/用户/mac_ui/.cocoapods/repos/master下去找索引库.spec文件


      1.png
    • 读取.spec文件中的代码库路径下下载代码
    • 下载代码
    以我们自己创建代码仓库“SLSpecs”为例
    • 我们在我们的Profile文件中pod 'YLView'

    • pod就会在路径/Users/mac_ui/.cocoapods/repos/SLSpecs下找到YLViews.podspec的文件


      2.png
    • 读取.spec文件中的代码库路径下下载代码


      3.png
    • 在代码仓库https://github.com/GuiFoA/YLEdgeLabel.git中下在代码

    • 下载代码

    公司公共库的创建步骤

    • 创建两个仓库:索引库和代码仓库(以码云作为仓库)

      • 创建索引库


        Xnip2018-05-30_13-43-36.png
      • 创创建代码仓库


        Xnip2018-05-30_16-36-27.png
    • 上传代码到代码仓库(切记一定要把podspec文件上传上去,不然s.source_files 会报错,因为s.source_files是以podspec文件,源文件所在目录名称与xx.podspec文件保持同名,且在同一个层级。)


      Xnip2018-05-30_13-58-22.png
    • 记住一定要打tag(tag就是版本号)
      git tag -m 'init' '0.0.1'
      git push --tags

      Xnip2018-05-30_14-12-03.png
    • 把索引库添加到本地
      pod repo add SLSpec https://gitee.com/appleimpression/SLSpec.git

      Xnip2018-05-30_14-18-20.png
    • 查看是否把索引库添加到本地
      pod repo

      Xnip2018-05-30_14-18-33.png
    • 创建spec文件

      • 通过命令创建 pod spec create 名字
      • 然后把下面的代码复制进去之后修改即可,
      s.name         = "libBPush"
      s.version      = "0.0.1"
      s.summary      = "赛雷测试"
      s.description  = "赛雷代码测试"
      s.homepage     = "https://gitee.com/appleimpression/SLCode.git"
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'liwenquan' => '1145821676@qq.com' }
      s.source       = { :git => "https://gitee.com/appleimpression/SLCode.git", :tag => "#{s.version}" }
    
    s.ios.deployment_target = '8.0'
    s.source_files = 'class/*.{h,m}'
      # s.public_header_files = 'Pod/Classes/**/*.h'
      # s.frameworks = 'UIKit', 'MapKit'
      # s.dependency 'AFNetworking', '~> 2.3'
      # s.vendored_libraries = 'upstream/*.a'
    end
    
    • 本地验证spec的正确性

      • cd podspec所在目录然后pod lib lint


        Xnip2018-05-30_16-41-05.png
      • 验证远程spec的正确性pod spec lint


        Xnip2018-05-30_16-42-40.png
      • 推送到podspec 到索引库


        Xnip2018-05-30_16-48-23.png
    • 搜索验证(切记搜索的是spec的名字不是索引库的名字切记)


      Xnip2018-05-30_17-02-00.png

    spec中添加静态库的依赖

    Xnip2018-05-30_17-01-45.png

    组件化资源资源的解决

    关于xib
    • xib和源文件放到同一个文件夹下 ,但是记住有xib的文件一定要以.h.m结尾。
    • 把xib的位置描述到资源bundle中。


      image
    • 注意事项:当使用源文件使用xib的时候,注意bundle不是主bundle 而是自己的bundle. xib中加载图片是加载不出来的。需要放到代码里面


      Xnip2018-06-04_14-58-41.png
    关于图片
    • 把文件放到Assets文件中


      Xnip2018-06-04_15-05-21.png
    • 修改spec,指定源文件路径


      Xnip2018-06-04_15-00-08.png
    生成framework
    • 修改代码


      Xnip2018-06-04_14-58-41.png
    • 如果组件中使用了资源,一定要把组件生成framework,不能生成.a,否则资源拿不到.


      image

    上传代码过程中遇到的问题

    • cocoapods迭代版本时和引用系统库的时候,出现的问题
    • pod search 的时候记住搜索一定是.podspec的名字不是文件夹的名字
    • 上传代码库的时候一定加.podspec文件。
    • pod spec lint --verbose 这是看查看详细的报错信息的
    • pod spec lint --use-libraries 这是表明要添加系统依赖库的
    • 后续继续添加....
    • 如果所有的都成功了出现pod search 搜索不到的现象
      • 删除~/Library/Caches/CocoaPods/search_index.json
      • 然后podserch就可以啦,就可以自动创建.search_index.json
    • 上传xib 出现(error: Safe Area Layout Guide before iOS 9.0)的时候,可以有如下解决方案:


      Xnip2018-06-01_16-17-16.png

    对podSpec 文件进行解读

    Pod::Spec.new do |s|
      s.name         = "libBPush"
      s.version      = "0.0.1"
      s.summary      = "赛雷测试"
      s.description  = "赛雷代码测试"
      s.homepage     = "https://gitee.com/appleimpression/SLCode.git"
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'liwenquan' => '1145821676@qq.com' }
      s.source       = { :git => "https://gitee.com/appleimpression/SLCode.git", :tag => "#{s.version}" }
    
    s.ios.deployment_target = '8.0'
    s.source_files = 'class/*.{h,m}'
      # s.public_header_files = 'Pod/Classes/**/*.h'
      # s.frameworks = "Foundation",'UIKit', 'MapKit'
      # s.vendored_libraries = 'upstream/*.a'
      # s.dependency 'AFNetworking', '~> 2.3'
      # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/CommonCrypto" }
    end
    

    对.spec中的文件进行说明

    • s.name :文件名称
    • s.version :文件版本号
    • s.summary:简介
    • s.descripton: 介绍
    • s.homepage:主页(写一个可以访问的地址即可)
    • s.license:协议(这个一般不要动)
    • s.author:作者(作者名字和作者的邮箱)
    • s.source: 代码仓库
    • s.public_header_files:导入头文件和静态库联合使用(配合静态库使用)。
    • s.platform: 平台支持ios多上以上的
    • s.source_files: 添加的.h.m源文件的位置(源文件所在目录名称与xx.podspec文件保持同名,且在同一个层级)
    • s.public_header_files:导入头文件和静态库联合使用(配合静态库使用)。
    • s.frameworks:添加框架引用的系统框架到我们文件中
    • s.vendored_libraries:添加的.a静态库的位置(配合头文件使用)
    • s.dependency: 添加的第三方依赖库
    • s.xcconfig :添加框架引用的系统框架到我们文件中(C语言的库引用 ,切记podspec本地验证和远程验证的时候要加 --use--libraries. 例如: 远程验证:pod spec lint CZFTool.podspec --use-libraries )

    关于版本的迭代

    • 更新版本组件版本
    • 修改代码,修改spec文件中的s.version 版本号
    • 进行达标计标记
      • git tag -m 'init' '0.0.2'
      • git push --tags
    • 进行索引库更新
      • pod repo push SLSpecs md5.podspec --use-libraries
    • 注意事项
      • 只要是用到苹果自带库需要验证或者推送本地索引库都要加上 --use-libraries

    组件库的使用

    • 创建一个项目
    • cd到相应的项目所在的目录 pod init
    • 出现podfile修改podfile中的文件
    # Uncomment the next line to define a global platform for your project
     platform :ios, '9.0'
    source 'https://github.com/CocoaPods/Specs.git'
    source 'git@git.saileikeji.com:root/SLSpecs.git'
    
    
    target 'testspec' do
      # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
      # use_frameworks!
       pod 'md5', '~> 0.0.1'
      # Pods for testspec
    
      target 'testspecTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
      target 'testspecUITests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end
    

    注意事项

    • pod 'md5' 只写名字不行版本pod 是最后一次pod的版本号,而不是最新的版本号
    • 然后pod install 即可。

    上传cocopod

    相关文章

      网友评论

          本文标题:关于上传组件的相关步骤和问题

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