目前,公司正在做静态库的封装工作,期间遇到不少坑,所以总结了一些关于集成遇到的问题和解决办法。本文包含从创建framework项目开始,到添加测试Demo,再到framework打包,最后到上传到Pods,都有涉及,期间有些问题还没解决,希望看到的朋友能一起解决。话不多少,上干货...
1. 请确保已经正确安装CocoaPods环境,这里不多说,自己去网上找教程很简单。
2. 打开终端,先cd到指定目录下,再执行pod lib create LCFramework, 接下来需要确认5个问题,如下:
创建出来的工程目录如下:
3. 打开 Core-JJSNetworking.podspec 文件,并修改配置信息,如下:
Pod::Spec.new do |s|
#SDK 名称
s.name = 'LCFramework'
#SDK 版本
s.version = '0.0.1'
s.summary = 'A virtual card manage SDK .'
s.description = <<-DESC
An optional longer description of BZLib
* Markdown format.
* Don't worry about the indent, we strip it!
DESC
s.homepage = 'http://172.18.80.22/iOS/LCFrameworkDemo'
s.license = 'MIT'
s.author = { 'lcc152' => 'lcc152@zcsmart.com' }
#这里写自己的项目所在地址,一般在我们以打tag的方式来标记
s.source = { :git => 'http://172.18.80.22/iOS/LCFrameworkDemo.git', :tag => "v0.0.1" }
s.ios.deployment_target = '8.0'
s.requires_arc = true
#表示类库的源文件存放目录(从上面的目录结构大家可以看到我们的framework源文件都是放在Classes文件夹下,
#这里是可以修改的,如果你想改的话,随便放在哪里都行,只要在podfile文件中指定好路径都行。我这里就和classes同级添加了新的文件夹Library)
s.source_files = 'LCFramework/Classes/**/*','LCFramework/Library/include/*'
# 资源文件 逗号后面不能有空格😓
s.resource_bundles = {
'LCFramework' => ['LCFramework/Assets/*.{jpg,pack,png}']
}
# 暴露出去的头文件
s.public_header_files = 'LCFramework/Classes/public/*.h'
# pch文件
s.prefix_header_file = 'LCFramework/Classes/project/LCPrefixHeader.pch'
# 依赖的Library
s.ios.vendored_libraries = 'LCFramework/Library/lib/libpos.a'
# 依赖的系统库 (包含第三方依赖的)
s.frameworks = 'UIKit','Foundation','SystemConfiguration','CoreGraphics','MobileCoreServices','Security'
# 依赖的三方库
s.dependency 'AFNetworking'
# 依赖的Framework
#s.ios.vendored_frameworks = 'LCFramework/Library/lib/*.framework'
end
4.然后把要封装的SDK文件 放到对应的目录,再切换到Example目录下,执行
Pod install
结构目录如下:
这里LCFileManage是我要封装的sdk,CCKSControl和CSCSoftcardUtil以及libpos.a是一套静态库,INIT.pack是资源文件,LCPrefixHeader是pch文件,这样一个基本的SDK模型结构就出来了
5.全部弄完以后就可以上传到Git了,并且记得打个tag,以供等下打包静态库使用。
6.打包之前使用 pod lib lint 验证类库是否符合 pod 的要求,可以使用 --allow-warnings 来忽略一些警告。(注意要切换到根目录)
pod lib lint LCFramework.podspec --allow-warnings
如果显示passed validation就可以了
7.打包。此时你需要安装一个 CocoaPods 打包插件
sudo gem install cocoapods-packager
8.然后就可以愉快的打包了
pod package LCFramework.podspec --force
如果命令后面加条尾巴 --library 则表示打包成 .a 文件,如果不带,则会打包成 .framework 文件。 --force会覆盖之前已存在的文件。完成了就可以在目录下看到LCFramework-0.0.1,里面就是你想要的Framework了。
9.如果你还想上传到cocoapods接着执行
pod trunk push LCFramework.podspec