iOS 利用工具制作Framework 库
前言
最近看到有很多人在讨论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'
如果搜索不到,需要更新下本地的索引文件。