说明 | 时间 |
---|---|
首次发布 | 2019年02月12日 |
最近更新 | 2020年10月23日 |
关于静态库,我就不做过多铺垫来引入这个概念及使用场景了。如果你做过pod库,那么你用这个插件来生成静态库或动态库,几乎没有太大学习成本了。
安装 cocoapods-packager
- 1、首先拉取源代码
git clone https://github.com/CocoaPods/cocoapods-packager.git
-2、完毕之后进入目录 cocoapods-packager
a. 查看bundler是否安装:
gem list bundler
没有出现bundler的话就gem install bundler
安装依赖项bundler install
b. 执行
sudo gem build cocoapods-packager.gemspec
语句后生成cocoapods-packager-1.5.0.gem文件c. 将生成的cocoapods-packager-1.5.0.gem 文件执行本地安装
sudo gem install cocoapods-packager-1.5.0.gem -l
创建Pod库
至于操作步骤,这里不再赘述,可以请参考我写的向CocoaPods提交开源代码。这里,我想着重强调的有以下几点:
- 1、每次修改pod的内容,务必要执行一下
pod install
; - 2、务必在
podspec
里指定正确的文件路径,否则可能导致找不到文件; - 3、务必打和podspec里版本号一致的tag;
- 4、非必要的头文件,不要暴露给外界;
关于 .podspec
里面各项的含义,注释之后,贴出来供大家参考。
#
# Be sure to run `pod lib lint MZTest.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 = 'MZTest'
# 版本号
s.version = '0.1.0'
# 项目摘要
s.summary = '测试pod-package打包静态库'
# 项目描述
s.description = '这里具体的描述,我就不写了'
# 项目主页地址
s.homepage = 'https://gitee.com/hkh_01/Test'
# 截屏地址
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
# 开源协议:包括协议的类型和许可文件名
s.license = { :type => 'MIT', :file => 'LICENSE' }
# 作者,多个作者可以用`s.authors`
s.author = { '人民重重' => 'the12306@qq.com' }
# 源代码仓库地址
s.source = { :git => 'https://gitee.com/hkh_01/Test.git', :tag => s.version.to_s }
# 社交地址
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# ios部署目标
s.ios.deployment_target = '8.0'
# 开源文件路径
s.source_files = 'MZTest/Classes/**/*'
# 资源文件
# s.resource_bundles = {
# 'MZTest' => ['MZTest/Assets/*.png']
# }
# 暴露给外部的头文件
# s.public_header_files = 'Pod/Classes/**/*.h'
# 用到的系统动态库
# s.frameworks = 'UIKit', 'MapKit'
# s.libraries 指依赖的系统静态库,类似libstdc++.a ,libsqlite.a 等等的a文件;
# s.vendored_frameworks, 表示pod依赖的自己的framework,比如QQSDK的TencentOpenAPI.framework,JSPatch热更新JSPatchPlatform.framework;
# 依赖的开源库
s.dependency 'YYModel'
end
生成静态库
- 1、执行命令,由于我用的第三方依赖库是
YYModel
,其仓库在Github,故不需要指定私有库--spec-sources=私有库地址
pod package MZTest.podspec --force --library
2、打包成功后,在工程目录下找到以版本号结尾的文件夹,里面就有
.a
静态库包,默认是release版本的。3、最后,将生成的
.a
和需要暴露的头文件,放到一个文件夹里,拖到工程,pod导入必要的依赖库就可以了。
最后的最后,补充一下知识。
- 术语介绍
// 强制覆盖之前生成的文件
--force
// 不使用name-mangling技术,也就是自动改类名等符号
--no-mangle
// 生成静态的framework
--embedded
// 生成静态.a
--library
// 生成动态framework
--dynamic
// 使用本地文件
--local
// 生成动态framework的时候需要这个BundleId来签名
--bundle-identifier
// 不包含依赖的符号表,也就是不把依赖的第三方库打包进去
--exclude-deps
// 生成debug还是release的库,默认是release
--configuration=Release
// 如果你的pod库有subspec,那么加上这个命名表示只给某个或几个subspec生成二进制库
--subspecs=subspec1,subspec2
// 默认是CocoaPods的Specs仓库,如果你的项目依赖使用的是私有的source,就可以通过这个参数来设置
--spec-sources=privatePods