升级Xcode14.x 后出现的那些坑

2023-05-17  本文已影响0人  Show_Perry
  1. 升级Xcode 14后运行工程报错 bundle targets' 'Signing Certificate' to 'Sign to Run Locally',这是因为Bundle签名不一致导致,一种解决办法是保持签名和主工程一致,一种是不签名。个人推荐第二种,解决办法:在podfile中添加下面脚本:
post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
        target.build_configurations.each do |config|
            config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        end
      end
    end

  end

参考:stackoverflow

  1. 升级Xcode14.3工程运行报错。File not found:arc/libarclite_iphoneSimulator 原因是 Xcode 14.3开始,增加了最低版本支持 Minimum Deployments 11.0,解决办法:在podfile中添加下面脚本:
post_install do |installer_representation|
  #由于 Xcode 14.3开始,增加了最低版本支持 Minimum Deployments 11.0,File not found:arc/libarclite_iphoneSimulator
  installer_representation.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
      end
    end
  end
end

  1. 升级Xcode14.3后执行 pod lib lint 报错:xcodebuild: Returned an unsuccessful exit code。往前查看fail的地方原因是libarclite_iphoneos.a,一看这个错误和2中提到的是类似的,原因是你依赖的库支持的最低版本是11以下。参考官方的一个issue:Xcode 14.3 has pod lib lint fail ,目前Cocoapods也没好的解决办法。要么升级库支持11以上,要么把Xcode版本降级至14.2。目前我选择了降级Xcode,这个很实硬伤,让我们发布新组件如果有依赖第三方已经没有维护的组件很是苦恼,感觉官方也没办法解决。

  2. 升级Xcode14+ 后执行 pod lib lint 报错:building for iOS Simulator, not found for architecture arm64这个错误让我很是无语,它报错的第三方库xxx.framework,查看它支持的架构有:are: armv7 i386 x86_64 arm64是包含arm64的,而且直接放到工程中用xcode14+打包ipa也没问题,就是pod lib lint报错,后面再排查了下把报错的内容发现一个关键信息:building for iOS Simulator, but linking in object file built for iOS

通过错误描述,在为 iOS 模拟器编译过程中,链接的这个库时找不到 arm64 架构。我们知道早前模拟器仅支持 i386 x86_64 架构即可,现在竟然在模拟器上需要 arm64架构了,应该是为了支持 Apple siliconM1正是 arm 架构,那 M1 上的模拟器自然就是需要 arm64 架构的了。目前看CocoaPods也有人遇到了类似问题:Error in PodSpec Validation due to architectures 貌似很早版本就有人遇到了,应该我刚好需要把这个framework引入组件中在Xcode14中遇到。
解决办法:
a. 修改 podspec:

s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }

b. pod lib lint跟上--skip-import-validation

上一篇下一篇

猜你喜欢

热点阅读