解决Xcode14 pod签名问题

⚠️不在维护说明

由于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.如下图:

error.png

解决办法也很简单就是给pod库里的bundle资源文件设置bundle identifierteam,让它和主工程一样就可以了。但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工程里的debugrelease环境使用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对应工程如下图:


image.png

image.png

image.png

通过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 identifierteam

pod install

执行上面的命令后我们可以看到pod工程里的资源文件也会对不同的config设置不同的bundle identifier:

image.png

image.png

image.png

2.3 team id获取

可能还有人不知道teamid在怎么找,打开主工程的project.pbxproj文件,搜索DEVELOPMENT_TEAM即可找到,你可能会找到多个,确认一下是在什么config下的team id,只有设置正确才能正常使用。如下图找到的team id对应的configDebug的:

image.png

三、结语

由于插件写出来的时间不长可能还会有问题,如果遇到问题请在git仓库提issues。

你可能感兴趣的:(解决Xcode14 pod签名问题)