pod package 失效了

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。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容