iOS 使用 cocoapods-packager 打包静态库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 使用 cocoapods-packager 打包静态库相关的知识,希望对你有一定的参考价值。
参考技术A 使用 Packager 打包在原有仓库中,使用 pod package 命令,将原有的源码打包为静态库:
podpackageAPodSpec.podspec--library
其中,–library 指定 packager 打出静态库。
如果仓库没有问题的话,会得到一个与当前 podspec 版本号对应的,名为 APodSpec-x.x.x 的文件夹。里面就会有已经打包好的 .a 文件和一些打包过程中的中间产物,以及一份自动生成的静态库版本的 .podspec 配置文件。这里需要注意的是,不能直接使用它自动生成的这份 .podspec 配置文件,这份配置文件实际上是给 framework 用的,而不是给 .a 的。
配置静态库的 podspec 文件
cocoapods-packager 打包静态库的功能存在 Bugs,让人感觉像是把打包 framework 的模块拿过来随便改改充数的。它有两个问题,首先,它在打包后不会将头文件拷贝出来和 .a 放到一起,.a 所在的目录只有光秃秃的一个静态库;其次,它自动生成的 .podspec 文件中配置的竟然是 s.ios.vendored_framework = 'ios/APodSpec.framework',但我们生成的是 .a 静态库,根本就不存在 framework。
这些问题在 CocoaPods 中很早就被提了 issue,但 CocoaPods 表示——虽然这是 Bugs,但是他们是不会修复的。因此,我们需要修正一下 podspec 文件。
最简单的方法就是把仓库中原有的 podspec 文件拷贝一份过来改一改。
首先我们需要指定静态库:
s.vendored_libraries ="Path/to/APodSpec.a"
然后,去掉原有的 s.public_header_files 字段,并按照以下方式指定静态库的头文件:
s.source_files ="APodSpec/**/*.h"
需要注意的是,这里不应该使用 s.public_header_files,而是用 s.source_files 去指定。
最后,去除一些没用的配置,比如 s.resources 等,就可以了。
验证
要测试配置是否有问题的话,可以直接拿新的 podspec 文件替换掉原有的试一试,在 Demo 中 pod install 后能编译成功的话基本就没问题了。
以上是关于iOS 使用 cocoapods-packager 打包静态库的主要内容,如果未能解决你的问题,请参考以下文章
即使使用 #available(iOS 15.0, *),iOS 15 唯一的视图修饰符也会导致 iOS 14 崩溃