解决Xcode14 pod签名问题

作者: wosicuanqi | 来源:发表于2022-07-04 16:31 被阅读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

    安装方式有两一种是用gem安装另一种是用bundle安装,我分别介绍一下两种方式:

    1.1 gem命令安装

    在终端执行下面的命令即可安装

    gem install cocoapods-pod-sign
    

    1.2 用bundle安装

    这个方式我们需要先创建一个Gemfile,在Podfile的同级目录执行以下命令创建:

    bundle init
    

    执行完上面的命令后会得到一个Gemfile文件,用编辑器打开Gemfile文件,Gemfile的内容如下图:

    image.png
    这个文件和Podfile文件一样并且操作也很像,内容里已给出例gem "rails"。我们按这种方式在文件后面追加一行代码如下:
    gem 'cocoapods-pod-sign'
    

    然后用终端进到该目录下执行以下命令即可安装:

    bundle install
    

    如果你使用过其他CocoaPods插件上面的不用讲也明白怎么回事。

    2、使用插件

    这个插件可自动从主工程获取bundle identifierteam并设置到pod的资源bundle上,如果你的项目自动设置不成功也可以选择手动配置。对了上面安装的方式不管是第一种还是第二种在使用插件这一步的时候都是需要Gemfile文件,所以建议用上面的第二种方式安装。

    2.1 自动设置

    Podfile里添加以下代码:

    # 这句可写在target外面也可写在里面
    plugin 'cocoapods-pod-sign'
    

    然后以下面的方式执行pod命令即可:

    bundle exec pod install
    

    由于我们使用了Gemfile文件所以前面要加上bundle exec才行,如果觉得麻烦也有办法省略这个bundle exec,请自己另外查询方法这里就不具体介绍了。

    2.2 手动配置

    有由项目的多样性,可能有些工程通过自动设置会失败所以又提供了一个手动设置的方式。例如我们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

    这情况正常情况下自动设置可以完成但也有例外,出现意外时我就要用下面的方式来设置:

    # 手动设置,插件的引入这次代码还是要的
    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

    bundle exec pod install
    

    三、结语

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

    相关文章

      网友评论

        本文标题:解决Xcode14 pod签名问题

        本文链接:https://www.haomeiwen.com/subject/ovddbrtx.html