兩種方式:
第一種就是自己生成.a 或者 .framework文件
第二種就是通過(guò)cocoapods的package命令生成
第一種不多說(shuō)了搓萧,直接根據(jù)腳本或者不用腳本也行生成,之后修改podspec文件里的sourse 把.h和.m改成.a就行了
第二種
pod package 是 cocoapods 的一個(gè)插件奋单,沒(méi)有的可以使用以下命令安裝:
sudo gem install cocoapods-packager
打包原理:pod package 根據(jù) *.podspec 描述文件來(lái)生成二進(jìn)制庫(kù)锉试。
pod package LSService.podspec --force --dynamic --no-mangle --spec-sources=https://github.com/CocoaPods/Specs.git
命令參數(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
//不包含依賴(lài)的符號(hào)表览濒,生成動(dòng)態(tài)庫(kù)的時(shí)候不能包含這個(gè)命令呆盖,動(dòng)態(tài)庫(kù)一定需要包含依賴(lài)的符號(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)有其他依賴(lài)的話,那么不使用這個(gè)命令也不會(huì)報(bào)錯(cuò)席里。但是如果有其他依賴(lài)叔磷,不使用--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
//一些依賴(lài)的source吞彤,如果你有依賴(lài)是來(lái)自于私有庫(kù)的我衬,那就需要加上那個(gè)私有庫(kù)的source,默認(rèn)是cocoapods的Specs倉(cāng)庫(kù)饰恕。--spec-sources=private,https://github.com/CocoaPods/Specs.git挠羔。 可以跟多個(gè),多個(gè)逗號(hào)隔開(kāi)