美文网首页
组件二进制

组件二进制

作者: 奋斗的蝼蚁 | 来源:发表于2020-11-07 21:22 被阅读0次

    大概的过程

    • 第一步
      项目是采用CocoaPods方式管理项目
    • 第二步
      保证项目能编译起来。
    • 第三步
      把项目打成静态. a文件

    详细说明

    第一步 省略不说,直接说第二步。
    举个例子,打之前先描述一个组件之间的关系,组件A依赖组件B和组件C,B和C之间没有依赖关系,组件A对组件B和C右依赖关系。
    比如现在要打组件A的静态包,现在组件B和组件C已经达成静态库了。
    这是故事背景大家记住了。

    进入正题

    修改组件中的podspec 的文件

    #
    # Be sure to run `pod lib lint test.podspec' to ensure this is a
    # valid spec before submitting.
    #
    # Any lines starting with a # are optional, but their use is encouraged
    # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
    #
    
    Pod::Spec.new do |s|
        s.name             = 'test.podspec'
    
        s.version          = '1.0.0.0'
        s.summary          = 'A short description of testModule.'
        
        # This description is used to generate tags and improve search results.
        #   * Think: What does it do? Why did you write it? What is the focus?
        #   * Try to keep it short, snappy and to the point.
        #   * Write the description between the DESC delimiters below.
        #   * Finally, don't worry about the indent, CocoaPods strips it!
        
        s.description      = <<-DESC
        评论模块
        DESC
        
        s.homepage         = 'xxxxx'
        s.license          = { :type => 'MIT', :file => 'LICENSE' }
        s.author           = { 'test' => 'test@test.com' }
        s.source           = { :git => 'xxxxx', :tag => s.version.to_s }
        # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
      
        s.ios.deployment_target = '9.0'
        # 需要设置MRC的文件相对路径
        s.source_files = 'testModule/Classes/**/*.{h,m}'
        # 默认是采用ARC编译的,排除mrc文件
    #Assets 文件夹下面没有资源先注释 二进制报错 - ERROR | [iOS] file patterns: The `resources` pattern did not match any file.
        s.public_header_files = 'Pod/Classes/**/*.h'
      s.dependency 'lottie-ios' ,'~> 2.5.3'
    
    
        # s.dependency 'UIView+FDCollapsibleConstraints', '1.1'
        # s.dependency 'UITableView+FDTemplateLayoutCell', '1.6'
        # s.dependency 'TZImagePickerController', '3.2.1'
    end
    

    上面那个文件是一个简单的demo工程,我们需要修改的文件有3处

    第一处 ,这个是这个组件在gitLabel 或者github 上的地址,可以访问到的。例子SDWebImage

    s.homepage         = 'https://github.com/SDWebImage/SDWebImage' 
    

    第二处,这个是你组件git 方式clone 的方式

       s.source           = { :git => 'xxxxx', :tag => s.version.to_s }
    

    第三处

    每次提交新的二进制 需要修改 s.version 版本号,可以后面添加1
    

    添加文件

    Gemfile 文件
    
    fastlane 相关文件
    

    层级关系和podspec 同级别

    命令

    pod package test.podspec --force --library --no-mangle --spec-sources=[git@gitlab-pri.sy.soyoung.com](mailto:git@gitlab-pri.sy.soyoung.com):soyoungios-public/SYPrivateSpecs.git,[https://github.com/CocoaPods/Specs.git,git@gitlab-pri.sy.soyoung.com:app_binary/Specs.git](https://github.com/CocoaPods/Specs.git,git@gitlab-pri.sy.soyoung.com:app_binary/Specs.git)
    

    上面几个源是我公司的源,还有一个是cocopod的源
    生成.a 文件就说明可以了

    相关错误

    Unable to find a specification for `test(>= 0.6.0)` depended upon by `xxx`
    You have either:
     * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
     * mistyped the name or version.
     * not added the source repo that hosts the Podspec to your Podfile
    

    这种问题是很常见的,解决方法
    先看 test 这个库是否是在仓库中有,这个仓库就是pod package 中添加的那些源。如果远端仓库中有,然后查看本地仓库 ,本地仓库 有哪些可以使用下面的命令行

    pod repo list 
    

    上面那行命令可以查看哪些仓库,然后在本地仓库中查看 你要下载的库,如果本地也有。接下来 你就查看项目中podfile 中添加的源source,是否有你需要的source。最后发现还是有,那你查看下test 这个库是否是个空的文件夹,如果是个空的文件夹,那就说明没有下载完成,解决方法是 test 这个库的版本加1 pod install, 然后减1 pod install。

    相关文章

      网友评论

          本文标题:组件二进制

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