解決Xcode14 pod簽名問題

??不在維護(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.如下圖:

error.png

解決辦法也很簡(jiǎn)單就是給pod庫(kù)里的bundle資源文件設(shè)置bundle identifierteam,讓它和主工程一樣就可以了。但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工程里的debugrelease環(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)工程如下圖:


image.png

image.png

image.png

通過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 identifierteam。

pod install

執(zhí)行上面的命令后我們可以看到pod工程里的資源文件也會(huì)對(duì)不同的config設(shè)置不同的bundle identifier:

image.png

image.png

image.png

2.3 team id獲取

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

image.png

三、結(jié)語

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

最后編輯于
?著作權(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)容