美文网首页iOS Developer首页推荐
iOS 利用工具制作Framework 库

iOS 利用工具制作Framework 库

作者: mark666 | 来源:发表于2018-04-28 18:03 被阅读164次

    前言

    最近看到有很多人在讨论framework的制作,大家可以在网上搜到各种各样的方法,一般步骤就是1>创建一个framework工程2>编写代码,关闭只编译活跃架构,在build setting选择静态库 将头文件拖到pubic 3> 进行编译得到framework。这是一般大家常用的步骤,但是这往往会遇到以下几个问题

    1.代码测试困难
    2.使用问题

    如果是这样做出的framework,我们在调试过程已经bug修复测试很麻烦,每次修改之余都需要进行制作,然后拖出来再测试,这样的效率是很低的,不利于整个开发流程,其次如果是给别人使用的话,我们每次版本迭代别人集成是很困难的,我们是需要一个自动化集成的过程的。

    所以这样文章主要解决以上问题,利用工具制作framework,并且支持cocoapods来集成到项目,下面展开本文。

    我们需要借助的工具的是 github 上的 CocoaPods Packager,
    链接:
    https://github.com/CocoaPods/cocoapods-packager

    第一步 安装CocoaPods Packager

    gem install cocoapods-packager
    

    如果遇到权限问题,加上sudo 来安装

    第二步 利用pod 来创建一个模板库文件BCPublicTest

    pod lib create BCPublicTest
    

    填写相应的信息就会给我们生成相应的模板库

    流程

    第三步 编写podspec文件,编写源码,上传远程代码仓库

    因为cocoapods-packager 是利用远程代码仓库的文件来生成.framework,所以我们需要做的是制作一个可利用cocoapod 库
    集成的远程库,这个过程在我以前文章里面有详细提到过,不了解的朋友可以查看一下。

    这里是编写podspec文件

    Pod::Spec.new do |s|
      s.name             = 'BCPublicTest'
      s.version          = '0.1.0'
      s.summary          = 'BCPublicTest'
    
      s.description      = <<-DESC
    BCPublicTest  是一个简单的测试的库文件。
                           DESC
    
      s.homepage         = 'https://github.com/markdashi'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'markdashi' => '274007989@qq.com' }
      s.source           = { :git => 'https://github.com/markdashi/BCPublicTest.git', :tag => s.version.to_s }
      s.ios.deployment_target = '8.0'
      s.source_files = 'BCPublicTest/Classes/**/*'
    end
    
    

    接下来需要接下来介个步骤

    git add .
    git commit -m 'xx'
    git remote add origin https://github.com/markdashi/BCPublicTest.git
    git push origin master
    git tag '0.1.0'
    git push --tags
    

    以上步骤呢就是我们发布了一个新的版本到远程代码仓库,这时候我们就需要借助CocoaPods Packager来进行打包了
    cd 到工程根目录下,执行下列命令

    pod package BCPublicTest.podspec
    

    经过以下过程:


    这样就会生成一个文件夹


    在文件下有我们的framework 库

    我们可以查看一下它二进制文件所支持的架构

     lipo -info BCPublicTest
    
     Architectures in the fat file: BCPublicTest are: armv7 armv7s i386 x86_64 arm64
    

    它是支持所有架构的,我们也可以根据自己的需要进行thin.

    这时候我们需要修改podspec 文件,把我们framework库发布上去

    Pod::Spec.new do |s|
      s.name             = 'BCPublicTest'
      s.version          = '0.1.0'
      s.summary          = 'BCPublicTest'
    
      s.description      = <<-DESC
    BCPublicTest  是一个简单的测试的库文件。
                           DESC
    
      s.homepage         = 'https://github.com/markdashi'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'markdashi' => '274007989@qq.com' }
      s.source           = { :git => 'https://github.com/markdashi/BCPublicTest.git', :tag => s.version.to_s }
    
      s.ios.deployment_target = '8.0'
    if ENV['IS_SOURCE']
    s.source_files = 'BCPublicTest/Classes/**/*{,h,.m}'
    else
      s.source_files = 'BCPublicTest/Classes/**/*.h'
      s.vendored_framework = 'BCPublicTest-0.1.0/ios/BCPublicTest.framework'
    end
    end
    
    

    我们可以通过一个ENV(环境变量)来区分源码和我们framework
    安装源码

    IS_SOURCE=1 pod install  
    

    安装framework

    pod install  
    

    这时候我们需要我们重新提交代码,并把原来的tag 0.1.0 删掉重新发布一个tag 上去

    git add .
    git commit -m 'xx'
    git push origin master
    git tag -d 0.1.0
    git push origin --delete tag 0.1.0
    git tag 0.1.0
    git push --tags
    

    以上呢我们整个制作过程就完成了,剩下最后一步了,就是可以让外界搜索到我们的库文件,可以是自己私有的索引库或者直接提交到master,这里为了方便演示我提交到master,需要借助与一下命令

    pod trunk push BCPublicTest.podspec
    

    成功以后我们就可以下载使用了,外界使用的时候也是framework 库的形式,也是看不到源码的。

    大家可以随便建立一个项目测试一下

    pod 'BCPublicTest'
    

    如果搜索不到,需要更新下本地的索引文件。

    相关文章

      网友评论

        本文标题:iOS 利用工具制作Framework 库

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