??不在維護(hù)說明
由于Cocoapods 1.12.0版本已經(jīng)解決了簽名問題,對(duì)應(yīng)issue,所以本插件不再維護(hù),如果你的CocoaPods低于1.12.0還可以繼續(xù)使用,此插件在舊版本上運(yùn)行正常。
一、背景
在使用Xcode14 beta版后如果你的pod庫(kù)里有bundle資源文件則會(huì)在編譯時(shí)報(bào)錯(cuò),報(bào)error: Signing for "xxx" requires a development team. Select a development team in the Signing & Capabilities editor.如下圖:

解決辦法也很簡(jiǎn)單就是給
pod庫(kù)里的bundle資源文件設(shè)置bundle identifier和team,讓它和主工程一樣就可以了。但pod里的配置都是自動(dòng)生成的在執(zhí)行pod install之后我們的配置就會(huì)消失,又得手動(dòng)設(shè)置一遍。開發(fā)階段改動(dòng)小的話還能承受但打包平臺(tái)沒法手動(dòng)改呀!為了解決這個(gè)問題我就寫了一個(gè)CocoaPods插件來處理這個(gè)問題。我寫的插件叫cocoapods-pod-sign,現(xiàn)在已經(jīng)發(fā)布大家可以拉取使用。
二、cocoapods-pod-sign使用介紹
1、安裝cocoapods-pod-sign
1.1 gem命令安裝
在終端執(zhí)行下面的命令即可安裝
gem install cocoapods-pod-sign
2、使用插件
推薦方法
最近收到幾個(gè)反饋說使用過程中遇到報(bào)錯(cuò),我知道這應(yīng)該占少數(shù)但為了讓大家不再遇到報(bào)錯(cuò)添加了一個(gè)新的方法用來跳過Xcode的簽名,相對(duì)來說這種方式更可靠所以推薦使用這種方式,在Podfile寫下以下內(nèi)容:
plugin 'cocoapods-pod-sign'
skip_pod_bundle_sign # 用來跳過Xcode對(duì)bundle資源的簽名
然后以下面的方式執(zhí)行pod命令即可:
pod install
到此基本可以解決99%人的問題,如果問題還沒解決再向下看。
這個(gè)插件對(duì)應(yīng)git代碼倉(cāng)庫(kù)在這里,如果覺得不錯(cuò)就star一下。
========================分割線===========================
以下方式不再推薦使用但還可以使用
這個(gè)插件可自動(dòng)從主工程獲取bundle identifier(1.3.x版本后不再設(shè)置bundle identifier)與team并設(shè)置到pod的資源bundle上,如果你的項(xiàng)目自動(dòng)設(shè)置不成功也可以選擇手動(dòng)配置。
2.1 自動(dòng)設(shè)置
在Podfile里添加以下代碼:
# 這句可寫在target外面也可寫在里面
plugin 'cocoapods-pod-sign'
然后以下面的方式執(zhí)行pod命令即可:
pod install
2.2 手動(dòng)配置
注意:只有在自動(dòng)設(shè)置完成后還不能解決編譯報(bào)錯(cuò)問題時(shí)才使用手動(dòng)設(shè)置。
上面自動(dòng)設(shè)置的方式可以解決80%左右的項(xiàng)目,但有些項(xiàng)目可能是多config的,不同的config使用不同的bundle identifier,或者有些工程可能自動(dòng)設(shè)置會(huì)失敗,所以又提供了一個(gè)手動(dòng)設(shè)置的方式。例如我們的example工程里的debug與release環(huán)境使用bundle identifier不一樣,我們以下面三個(gè)不同環(huán)境配置為例:
Debug
bundle identifier: com.aaa.bbb
team: ABCDEFG
Release
bundle identifier: com.ccc.ddd
team: HIJKLMN
Profile
bundle identifier: com.xxx.eee
team: ASDFGHJ
上面的三個(gè)config對(duì)應(yīng)工程如下圖:



通過config_pod_bundle_id_and_team_id來設(shè)置不同的config下使用不同的bundle identifie和team id(后面有team id介紹獲取方式):
# 手動(dòng)設(shè)置,插件的引入這次代碼還是要的
plugin 'cocoapods-pod-sign'
config_pod_bundle_id_and_team_id({
'Debug' => {:bundle_id => 'com.aaa.bbb', :team_id => 'ABCDEFG'},
'Release' => {:bundle_id => 'com.ccc.ddd', :team_id => 'HIJKLMN'},
'Profile' => {:bundle_id => 'com.xxx.eee', :team_id => 'ASDFGHJ'}
})
通過上面這種設(shè)置后再執(zhí)行pod命令后即可實(shí)現(xiàn)在bundle資源設(shè)置上bundlie identifier與team。
pod install
執(zhí)行上面的命令后我們可以看到pod工程里的資源文件也會(huì)對(duì)不同的config設(shè)置不同的bundle identifier:



2.3 team id獲取
可能還有人不知道teamid在怎么找,打開主工程的project.pbxproj文件,搜索DEVELOPMENT_TEAM即可找到,你可能會(huì)找到多個(gè),確認(rèn)一下是在什么config下的team id,只有設(shè)置正確才能正常使用。如下圖找到的team id對(duì)應(yīng)的config是Debug的:

三、結(jié)語
由于插件寫出來的時(shí)間不長(zhǎng)可能還會(huì)有問題,如果遇到問題請(qǐng)?jiān)?a target="_blank">git倉(cāng)庫(kù)提issues。