cocoapods打包静态库---cocoapods-packager的安装使用

1,469 阅读2分钟

使用命令行查看当前使用gem安装的软件

gem list
zhangkaiqiang@private ~ % gem list
*** LOCAL GEMS ***
cocoapods-packager (1.5.0)

使用gem安装的cocoapods-packager的系统版本过低。以下将介绍基于源码来来本地安装打包。

源码下载

官方仓库cocoapods-packager下载源码,我们可以使用master分支。或者其他稳定的分支。这里必须使用git clone 不能用zip

git clone https://github.com/CocoaPods/cocoapods-packager.git

修改版本号

下载完成源码之后, 找到目录下cocoapods-packager/lib/cocoapods_packager.rb 文件, 打开可以看到其版本是 1.5.0。 可以修改成1.6.0。避免之后被gem源覆盖。

构建gem包

gem依赖包安装完成后,执行构建命令

**

sudo gem build cocoapods-packager.gemspec

执行成功后会生成 cocoapods-packager-1.6.0.gem 文件

本地安装gem包

将前面生成的 cocoapods-packager-1.6.0.gem 文件执行本地安装

**

sudo gem install cocoapods-packager-1.6.0.gem -l 

安装过程中会将 cocoapods-packager-1.6.0.gem 和其相关依赖 gem 安装到默认目录

检查安装结果

安装完成执行

**

gem list 

或者:
gem list | grep cocoapods-packager

可以看到gem已安装列表里多了 cocoapods-packager (1.6.0)这个版本,这个版本就有 --local 参数

//强制覆盖之前已经生成过的二进制库 
--force

//生成静态.framework 
--embedded

//生成静态.a 
--library

//生成动态.framework 
--dynamic

//动态.framework是需要签名的,所以只有生成动态库的时候需要这个BundleId 
--bundle-identifier

//不包含依赖的符号表,生成动态库的时候不能包含这个命令,动态库一定需要包含依赖的符号表。 
--exclude-deps

//表示生成的库是debug还是release,默认是release。--configuration=Debug 
--configuration


--no-mangle
//表示不使用name mangling技术,pod package默认是使用这个技术的。我们能在用pod package生成二进制库的时候会看到终端有输出Mangling symbols和Building mangled framework。表示使用了这个技术。
//如果你的pod库没有其他依赖的话,那么不使用这个命令也不会报错。但是如果有其他依赖,不使用--no-mangle这个命令的话,那么你在工程里使用生成的二进制库的时候就会报错:Undefined symbols for architecture x86_64。

--subspecs

//如果你的pod库有subspec,那么加上这个命名表示只给某个或几个subspec生成二进制库,--subspecs=subspec1,subspec2。生成的库的名字就是你podspec的名字,如果你想生成的库的名字跟subspec的名字一样,那么就需要修改podspec的名字。 
这个脚本就是批量生成subspec的二进制库,每一个subspec的库名就是podspecName+subspecName。

--spec-sources
//一些依赖的source,如果你有依赖是来自于私有库的,那就需要加上那个私有库的source,默认是cocoapods的Specs仓库。--spec-sources=private,https://github.com/CocoaPods/Specs.git。 可以跟多个,多个逗号隔开