xcode14:如何快速更新多个内部cocopods框架的签名?

wqsoz72f  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(290)

所以我换了Xcode 14,它给了我很多编译错误,其中大部分都与内部框架的签名有关(应用程序模块化程度很高)。虽然我一直在手动更新(更新了大约70个模块),但我觉得很糟糕,因为这是浪费时间,而且问题可能在未来再次发生。
我发现这个线程中提到了CODE_SIGN_STYLE=Manual,但是项目文件夹中的grep CODE_SIGN_STYLE -r .给了我很多CODE_SIGN_STYLE = Automatic;的点击。另外,复选框Automatically manage signing对所有这些模块都是启用的。

我猜这是Xcode14错误,所以我想问:
1.如果你遇到过这个问题,你是怎么解决的?
1.我可以使用一些非自定义脚本,如xcodesign-fix-team-for-automatic-signing --team MY_TEAM_ID,在一次点击中完成吗?
UPD:我在project.pbxproj文件中发现了这样的字符串,这些“坏”模块:

"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
                "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";

但在我手动更新“签名”选项卡中的Team后,该CODE_SIGN_IDENTITY[sdk=iphoneos*]值仍然为空。

ymdaylpp

ymdaylpp1#

对我有效的解决方案(只是将该阶段添加到Podfile):

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings["DEVELOPMENT_TEAM"] = " Your Team ID  "
         end
    end
  end
end

我在CocoaPods期刊上找到了它,这和我的问题是一样的。
在此之前,我尝试使用this advice在各个模块的.pbxproj文件中查找DEVELOPMENT_TEAM/DevelopmentTeam/Team,但由于没有指定团队,因此很明显这是CocoaPods的问题。

kh212irz

kh212irz2#

不需要指定团队ID的解决方案。适用于通用复制粘贴。

post_install do |installer|
    # get team-id from project's first target
    dev_team = ""
    project = installer.aggregate_targets[0].user_project
    project.targets.each do |target|
        target.build_configurations.each do |config|
            if dev_team.empty? and !config.build_settings['DEVELOPMENT_TEAM'].nil?
                dev_team = config.build_settings['DEVELOPMENT_TEAM']
                break
            end
        end
    end
  
    # Apply team-id
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings["DEVELOPMENT_TEAM"] = dev_team
        end
    end
end

灵感来源:https://www.jianshu.com/p/685b32c3d521

相关问题