⚠️不在维护说明
由于Cocoapods 1.12.0版本已经解决了签名问题,对应issue,所以本插件不再维护,如果你的CocoaPods低于1.12.0还可以继续使用,此插件在旧版本上运行正常。
一、背景
在使用Xcode14 beta版后如果你的pod库里有bundle资源文件则会在编译时报错,报error: Signing for "xxx" requires a development team. Select a development team in the Signing & Capabilities editor.如下图:
解决办法也很简单就是给
pod
库里的bundle
资源文件设置bundle identifier
和team
,让它和主工程一样就可以了。但pod
里的配置都是自动生成的在执行pod install
之后我们的配置就会消失,又得手动设置一遍。开发阶段改动小的话还能承受但打包平台没法手动改呀!为了解决这个问题我就写了一个CocoaPods
插件来处理这个问题。我写的插件叫cocoapods-pod-sign
,现在已经发布大家可以拉取使用。
二、cocoapods-pod-sign使用介绍
1、安装cocoapods-pod-sign
1.1 gem命令安装
在终端执行下面的命令即可安装
gem install cocoapods-pod-sign
2、使用插件
推荐方法
最近收到几个反馈说使用过程中遇到报错,我知道这应该占少数但为了让大家不再遇到报错添加了一个新的方法用来跳过Xcode
的签名,相对来说这种方式更可靠所以推荐使用这种方式,在Podfile
写下以下内容:
plugin 'cocoapods-pod-sign'
skip_pod_bundle_sign # 用来跳过Xcode对bundle资源的签名
然后以下面的方式执行pod
命令即可:
pod install
到此基本可以解决99%人的问题,如果问题还没解决再向下看。
这个插件对应git代码仓库在这里,如果觉得不错就star一下。
========================分割线===========================
以下方式不再推荐使用但还可以使用
这个插件可自动从主工程获取bundle identifier
(1.3.x版本后不再设置bundle identifier)与team
并设置到pod
的资源bundle
上,如果你的项目自动设置不成功也可以选择手动配置。
2.1 自动设置
在Podfile
里添加以下代码:
# 这句可写在target外面也可写在里面
plugin 'cocoapods-pod-sign'
然后以下面的方式执行pod
命令即可:
pod install
2.2 手动配置
注意:只有在自动设置完成后还不能解决编译报错问题时才使用手动设置。
上面自动设置的方式可以解决80%左右的项目,但有些项目可能是多config
的,不同的config
使用不同的bundle identifier
,或者有些工程可能自动设置会失败,所以又提供了一个手动设置的方式。例如我们的example
工程里的debug
与release
环境使用bundle identifier
不一样,我们以下面三个不同环境配置为例:
Debug
bundle identifier: com.aaa.bbb
team: ABCDEFG
Release
bundle identifier: com.ccc.ddd
team: HIJKLMN
Profile
bundle identifier: com.xxx.eee
team: ASDFGHJ
上面的三个config对应工程如下图:
通过config_pod_bundle_id_and_team_id来设置不同的config下使用不同的bundle identifie和team id(后面有team id介绍获取方式):
# 手动设置,插件的引入这次代码还是要的
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'}
})
通过上面这种设置后再执行pod
命令后即可实现在bundle
资源设置上bundlie identifier
与team
。
pod install
执行上面的命令后我们可以看到pod工程里的资源文件也会对不同的config
设置不同的bundle identifier
:
2.3 team id获取
可能还有人不知道teamid
在怎么找,打开主工程的project.pbxproj
文件,搜索DEVELOPMENT_TEAM
即可找到,你可能会找到多个,确认一下是在什么config
下的team id
,只有设置正确才能正常使用。如下图找到的team id
对应的config
是Debug
的:
三、结语
由于插件写出来的时间不长可能还会有问题,如果遇到问题请在git仓库提issues。