iOS:pod-packager打包静态库

说明 时间
首次发布 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • 今天早上犯了个“我以为”的错误,昨天下午接姐姐放学的路上,姐姐告诉我明天要带100元饭钱和150元保险费,并提醒要...
    鸭蛋妈妈阅读 60评论 0 1
  • 杨倩,焦点讲师三期,坚持分享455天(2018-3-30) 每个人都需要被看见 孩子需...
    温心怡然阅读 134评论 0 0
  • 陈姐,姓陈。是一七年九月绍兴旅行时遇见的一位驴友。说实话,过去了一年多,陈姐的模样,有些模糊,记不清了。但她给我的...
    昇夫阅读 662评论 10 9
  • 前段时间碰到一个姑娘问我婚姻的相关事宜,其实对于婚姻这种事我也是井底之蛙,分不清爱情是非,而且本着帮和不帮分的心态...
    周维格阅读 992评论 6 20