一、私有庫(kù)依賴私有庫(kù)的處理
- 在podspec中添加
s.dependency 'XXXNetworking'
- 在podfile中惶凝,添加上官方庫(kù)和私有庫(kù)的地址桩蓉,不然pod install不通過
source 'https://cdn.cocoapods.org/' # 官方庫(kù)
source 'http://XXXX' # 私有庫(kù)
二破婆、添加第三方的framework
這個(gè)過程中出現(xiàn)了很多的問題,一一列舉解決
1、framework放置的位置
一開始將framework還是放在Classes文件夾中掌栅,可以pod install項(xiàng)目中秩仆,但是出現(xiàn)了問題
- 首先是s.ios.vendored_frameworks = 'XXX/Classes/Frameworks/*.framework',需要這樣來寫
- 但是這樣弄了之后猾封,雖然pod進(jìn)了項(xiàng)目逗概,但是多了framework的文件夾,導(dǎo)入到主工程中會(huì)將所有的framework中的頭文件都導(dǎo)入進(jìn)來
問題解決
后來經(jīng)過查資料忘衍,framework應(yīng)該放在與podspec同級(jí)別的位置逾苫,這樣pod install之后才會(huì)顯示正常,并且導(dǎo)入到主工程正常枚钓。
2铅搓、pod spec lint 驗(yàn)證錯(cuò)誤
- 用之前
pod spec lint --verbose --allow-warnings
,但是這樣報(bào)錯(cuò)2蠼荨P顷! - 因?yàn)楫?dāng)用到除github上的庫(kù)依賴時(shí)嫩舟,在進(jìn)行遠(yuǎn)程驗(yàn)證的時(shí)候要把所有的索引源都帶上氢烘,于是改成了這樣:
pod spec lint --sources=xxx/xxxSpecs.git,https://cdn.cocoapods.org/ --verbose --allow-warnings
- 一般項(xiàng)目到這里就沒問題了,但是我這個(gè)依然報(bào)錯(cuò)家厌,因?yàn)樗接袔?kù)中包含了百度BOS的第三方庫(kù)播玖,所以還是報(bào)錯(cuò)!7褂凇蜀踏!
問題解決
改成這樣就行了pod spec lint --sources=xxx/xxxSpecs.git,https://cdn.cocoapods.org/ --use-libraries --verbose --allow-warnings
3、push上傳
在驗(yàn)證的時(shí)候我們添加了source源和use-libraries掰吕,那么在push的時(shí)候也要相應(yīng)的加上果覆,這樣才不報(bào)錯(cuò)
問題解決
pod repo push iOS_ZXKSpecs iOS_ZXKBaiduUploadKit.podspec --sources=xxx/xxxSpecs.git,https://cdn.cocoapods.org/ --use-libraries --verbose --allow-warnings
4、主工程中pod install報(bào)錯(cuò)
這時(shí)候私有庫(kù)的上傳已經(jīng)沒有問題殖熟,歡喜的去主工程中進(jìn)行pod install了局待,也沒有問題~但是當(dāng)run工程的時(shí)候,真機(jī)沒有問題菱属,但是模擬器卻報(bào)錯(cuò)了:
building for iOS Simulator, but linking in object file built for iOS,……or architecture arm64
這種的錯(cuò)誤:
問題解決
這個(gè)問題查了很久钳榨,搜了很多試了很多,直接先上最后的解決辦法
在私有庫(kù)的podspec文件中照皆,添加如下語(yǔ)句
s.xcconfig = { 'VALID_ARCHS' => 'arm64 x86_64 armv7' }
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
然后在主工程的build setting => User-Defined添加VALID_ARCHS為arm64 arm64e x86_64
再把私有庫(kù)更新導(dǎo)入一下重绷,這樣主工程用模擬器跑就不會(huì)報(bào)錯(cuò)了
其他錯(cuò)誤
在另一個(gè)引入先聲評(píng)測(cè)的私有庫(kù)中,在一開始依賴SingSoundSDK的時(shí)候報(bào)了如下錯(cuò)誤
The 'Pods-Tatget' target has transitive dependencies that include static binaries
1膜毁、這是由于在Podfile中使用了use_frameworks!
由于交叉依賴性昭卓,不能同時(shí)擁有與框架和靜態(tài)庫(kù)相同的pod愤钾,導(dǎo)致出現(xiàn)了這種錯(cuò)誤。
2候醒、Cocoapods 1.3.1及更早的版本不支持靜態(tài)庫(kù)框架依賴項(xiàng)能颁,Cocoapods1.4.0中添加了static_framework選項(xiàng),使您可以指定將pod構(gòu)建為static_framework,與動(dòng)態(tài)框架不同倒淫,它可以具有靜態(tài)框架依賴性伙菊。
3、要解決這個(gè)問題敌土,通過pod引入的第三方镜硕,則需要修改對(duì)應(yīng)的podspec文件,其依賴項(xiàng)的static_framework為true返干。任何依賴于static_framework的pod也必須是靜態(tài)的兴枯,動(dòng)態(tài)庫(kù)不能依賴于靜態(tài)庫(kù)
4、我是將Podfile中的use_frameworks!直接去掉了
參考資料:
- http://www.reibang.com/p/bef844de6bec
- https://blog.csdn.net/wyz670083956/article/details/109326376
- http://blog.itblood.com/428.html
- http://www.reibang.com/p/d521d5051bf2
- https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios?page=1&tab=votes#tab-top
- https://blog.csdn.net/watson2017/article/details/109114524
- http://www.reibang.com/p/f3e7142de8b4
- http://www.reibang.com/p/283584683b0b
- https://blog.csdn.net/weixin_46818265/article/details/109672044
- http://www.reibang.com/p/3d0ae289dee0
- http://www.reibang.com/p/56e17c8e3a94
- http://www.reibang.com/p/7fb20a61abab