iOS Developer首页推荐

iOS 利用工具制作Framework 库

2018-04-28  本文已影响164人  mark666

前言

最近看到有很多人在讨论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'

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

上一篇下一篇

猜你喜欢

热点阅读