pod package 可以用來(lái)生成 Framework姨蝴,這是我們使用這個(gè)命令的目的。
pod package 這個(gè)命令瓢谢,是來(lái)自cocoapods 的一個(gè)插件:cocoapods-packager
- Gem: cocoapods-packager
- URL: https://github.com/CocoaPods/cocoapods-packager
但是八拱,Cocoapods 1.12 版本之后默認(rèn)沒(méi)有安裝這個(gè)插件了。因此数初,執(zhí)行這個(gè)命令就會(huì)報(bào)錯(cuò):
[!] Unknown command: `package`
那就安裝這個(gè)插件。
使用命令 pod plugins installed
可以查看當(dāng)前安裝的插件
% pod plugins installed
Installed CocoaPods Plugins:
- cocoapods-deintegrate : 1.0.5
- cocoapods-packager : 1.5.0
- cocoapods-plugins : 1.0.0
- cocoapods-search : 1.0.1
- cocoapods-trunk : 1.6.0
- cocoapods-try : 1.2.0
如果你是通過(guò)Homebrew
安裝的CocoaPods
膨更,那請(qǐng)關(guān)注這個(gè) Issues
如果這個(gè)issues還沒(méi)被解決妙真,那么我推薦用gem安裝CocoaPods
首先,先卸載用brew install cocoapods安裝的CocoaPods (如果有的話)
brew uninstall cocoapods
其次荚守,在目錄 ~/.cocoapods/repos/cocoapods
中有一個(gè)Gemfile文件
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '> 2.0.0'
gem 'cocoapods', '~> 1.9'
gem 'rubocop'
gem 'cocoapods-packager'
然后執(zhí)行命令安裝
MacBook@MacBook-Air % cd ~/.cocoapods/repos/cocoapods
MacBook@MacBook-Air % bundle install
...
Bundle complete! 3 Gemfile dependencies, 49 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
最后珍德,介紹一下pod package的命令參數(shù)
//強(qiáng)制覆蓋之前已經(jīng)生成過(guò)的二進(jìn)制庫(kù)
--force
//生成靜態(tài).framework
--embedded
//生成靜態(tài).a
--library
//生成動(dòng)態(tài).framework
--dynamic
//動(dòng)態(tài).framework是需要簽名的,所以只有生成動(dòng)態(tài)庫(kù)的時(shí)候需要這個(gè)BundleId
--bundle-identifier
//不包含依賴的符號(hào)表矗漾,生成動(dòng)態(tài)庫(kù)的時(shí)候不能包含這個(gè)命令锈候,動(dòng)態(tài)庫(kù)一定需要包含依賴的符號(hào)表。
--exclude-deps
//表示生成的庫(kù)是debug還是release敞贡,默認(rèn)是release泵琳。--configuration=Debug
--configuration
--no-mangle
//表示不使用name mangling技術(shù),pod package默認(rèn)是使用這個(gè)技術(shù)的誊役。我們能在用pod package生成二進(jìn)制庫(kù)的時(shí)候會(huì)看到終端有輸出Mangling symbols和Building mangled framework获列。表示使用了這個(gè)技術(shù)。
//如果你的pod庫(kù)沒(méi)有其他依賴的話蛔垢,那么不使用這個(gè)命令也不會(huì)報(bào)錯(cuò)击孩。但是如果有其他依賴,不使用--no-mangle這個(gè)命令的話鹏漆,那么你在工程里使用生成的二進(jìn)制庫(kù)的時(shí)候就會(huì)報(bào)錯(cuò):Undefined symbols for architecture x86_64巩梢。
--subspecs
//如果你的pod庫(kù)有subspec创泄,那么加上這個(gè)命名表示只給某個(gè)或幾個(gè)subspec生成二進(jìn)制庫(kù),--subspecs=subspec1,subspec2括蝠。生成的庫(kù)的名字就是你podspec的名字鞠抑,如果你想生成的庫(kù)的名字跟subspec的名字一樣,那么就需要修改podspec的名字忌警。
這個(gè)腳本就是批量生成subspec的二進(jìn)制庫(kù)搁拙,每一個(gè)subspec的庫(kù)名就是podspecName+subspecName。
--spec-sources
//一些依賴的source慨蓝,如果你有依賴是來(lái)自于私有庫(kù)的感混,那就需要加上那個(gè)私有庫(kù)的source,默認(rèn)是cocoapods的Specs倉(cāng)庫(kù)礼烈。--spec-sources=private,https://github.com/CocoaPods/Specs.git弧满。