pod package 可以用來生成 Framework,這是我們使用這個命令的目的。
pod package 這個命令,是來自cocoapods 的一個插件:cocoapods-packager
- Gem: cocoapods-packager
- URL: https://github.com/CocoaPods/cocoapods-packager
但是,Cocoapods 1.12 版本之后默認沒有安裝這個插件了。因此,執(zhí)行這個命令就會報錯:
[!] Unknown command: `package`
那就安裝這個插件。
使用命令 pod plugins installed
可以查看當前安裝的插件
% 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
如果你是通過Homebrew
安裝的CocoaPods
,那請關注這個 Issues
如果這個issues還沒被解決,那么我推薦用gem安裝CocoaPods
首先,先卸載用brew install cocoapods安裝的CocoaPods (如果有的話)
brew uninstall cocoapods
其次,在目錄 ~/.cocoapods/repos/cocoapods
中有一個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ù)
//強制覆蓋之前已經(jīng)生成過的二進制庫
--force
//生成靜態(tài).framework
--embedded
//生成靜態(tài).a
--library
//生成動態(tài).framework
--dynamic
//動態(tài).framework是需要簽名的,所以只有生成動態(tài)庫的時候需要這個BundleId
--bundle-identifier
//不包含依賴的符號表,生成動態(tài)庫的時候不能包含這個命令,動態(tài)庫一定需要包含依賴的符號表。
--exclude-deps
//表示生成的庫是debug還是release,默認是release。--configuration=Debug
--configuration
--no-mangle
//表示不使用name mangling技術(shù),pod package默認是使用這個技術(shù)的。我們能在用pod package生成二進制庫的時候會看到終端有輸出Mangling symbols和Building mangled framework。表示使用了這個技術(shù)。
//如果你的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。