iOS 17 适配 Xcode 15 问题

这篇具有很好参考价值的文章主要介绍了iOS 17 适配 Xcode 15 问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在适配 iOS 17 + xcode 15时遇到的问题,记录一下。

1、 Could not build module ‘WebKit’

type argument 'nw_proxy_config_t' (aka 'struct nw_proxy_config *') is neither an Objective-C object nor a block type

解决方案:

  1. 选中不能编译的库的xcodeproj,在Build Phrases -> Compile Sources,选中所有文件,Complier Flags 里删除 -DOS_OBJECT_USE_OBJC=0

可能是三方库的目标版本比较低,cocoapods兼容低版本自动加上了 -DOS_OBJECT_USE_OBJC=0,也可以修改库的podspec 的 s.platforms = { :ios => "11.0", :osx => "" } 重新 pod install

  1. 临时方案
    NSArray<nw_proxy_config_t> *proxyConfigurations 编译版本改为180000
    编辑文件 /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.0.sdk/System/Library/Frameworks/WebKit.framework/Headers/WKWebsiteDataStore.h
    将里面的 170000 修改成 180000。

2、 Assertion failed
Assertion failed: (false && “compact unwind compressed function offset doesn’t fit in 24 bits”), function operator(), file Layout.cpp, line 5758.

解决方法:Other Link Flags 添加-ld64 或者 -ld_classic
路径:Build Settings -> Linking - General -> Other Link Flags 添加-ld64 或者 -ld_classic

post_install do |installer|
  # 调试flutter时打开
#  flutter_post_install(installer) if defined?(flutter_post_install)
  
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
    
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      
      # 同步 pod 库的最低支持版本为 10.0
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
      
      config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
      config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
      
#      config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""

     # pod 也要添加“模拟器排除 arm64 支持”
     config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"

    # 修复 Xcode 15 上,ios 14及以下版本运行时崩溃的问题
	xcode_version = `xcrun xcodebuild -version | grep Xcode | cut -d' ' -f2`.to_f
      if xcode_version ≥ 15
        config.build_settings["OTHER_LDFLAGS"] = "$(inherited) -Wl, -ld_classic"
      end
      
      # 修复 Xcode 14 中,Pod 工程中的 Bundle target 签名报错的问题
      config.build settings["CODE SIGN IDENTITY"] = = ""
      
#      if target.name.eql?('SnapKit')
#        libraries = config.build_settings['OTHER_LDFLAGS']
#        config.build_settings['OTHER_LDFLAGS'] = "#{libraries} -lswiftCoreGraphics"
#        libraryPath = config.build_settings['LIBRARY_SEARCH_PATHS']
#        config.build_settings['LIBRARY_SEARCH_PATHS'] = "#{libraryPath} $(SDKROOT)/usr/lib/swift"
#      end

    end
  end
end

iOS 17 适配 Xcode 15 问题,iOS 之旅,ios,xcode,cocoa

发现报错,因为项目中有些库没有用到swiftCoreGraphics,比如OC的三方库,或者非UI的库,所以还是要改,需要区分添加。针对项目中Swift类型的UI相关的库,添加这个编译选项,其他的不添加,最终示例如下:

need_otherlinkerflags_frameworks = ['FSPagerView', 'HandyJSON', 'IQKeyboardManagerSwift', 'JXSegmentedView', 'KDCircularProgress', 'Kingfisher', 'RxSwift', 'PKHUD', 'RxCocoa', 'SnapKit', 'ZLPhotoBrowser']
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          if need_otherlinkerflags_frameworks.include?(target.name)
            config.build_settings['OTHER_LDFLAGS'] = '-Wl,-weak-lswiftCoreGraphics'
          end
        end
    end
end

3、 dyld: Library not loaded: /System/Library/Frameworks/SwiftUI.framework/SwiftUI

dyld: Library not loaded: /System/Library/Frameworks/SwiftUI.framework/SwiftUI
  Referenced from: /var/containers/Bundle/Application/73E9CC61-6EBE-46DB-A786-4E47290284AD/xxx.app/xxx
  Reason: image not found

项目中没有使用SwiftUI ,但是在适配iOS 17时还是报这个问题。
经排查,SwiftUI 使用 LC_LOAD_WEAK_DYLIB,而 Foundation 使用 LC_LOAD_DYLIB。这就是我们想要的。
https://developer.apple.com/forums/thread/126506
解决方法:
路径:Build Settings -> Linking - General -> Other Link Flags 添加-weak_framework SwiftUI

4、 The iOS deployment target ‘IPHONEOS_DEPLOYMENT_TARGET’ is set to xxx
产生原因:
在编译cocoapods管理的三方库时出现了这个警告,原因是该三方库部署目标的系统版本最低要求是8.0,而升级Xcode支持的部署最低版本范围是xxx,不匹配所以报警了。

解决方案:
将所有三方库的部署版本号强制修改到Xcode支持的范围内,代码如下:文章来源地址https://www.toymoban.com/news/detail-713601.html

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 11.0
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
      end
    end
  end
end

到了这里,关于iOS 17 适配 Xcode 15 问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS 17 及 Xcode 15.0 Beta7 问题记录

    iOS 17之后,真机调试Beta版本必须使用Beta版本的Xcode来调试,用以前复制DeviceSupport 方式无法调试,新的Beta版本Xcode中,已经不包含 iOS 17目录。如下图: 解决方案: 1)下载最新的Beta 版本Xcode 15 2)运行命令 defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled 此时旧版本Xcode 将会出

    2024年02月11日
    浏览(30)
  • xcode15一直显示正在连接iOS17真机问题解决

    前言 更新xcode15之后,出现了各种报错问题,可谓是一路打怪啊,解决一个报错问题又来一个。没想到到了最后还能出现一个 一直显示正在连接iOS17真机的问题 一直显示正在连接iOS17真机的问题 问题截图如下: 解决方法 1. 打开Devices and Simulators,查看,发现当前真机 一直处于

    2024年02月08日
    浏览(50)
  • Xcode升级到15.0 iOS17.0会出现的问题

    解决办法: Build Settings 搜索 User Script Sandboxing ,把== User Script Sandboxing== 改为 NO 。 解决办法:全局搜索 DT_TOOLCHAIN_DIR ,一键替换成 TOOLCHAIN_DIR 。 解决方法:去pod里面搜索 iOS Deployment Target ,全部替换成最低支持iOS 12.0 解决方法:将Build Phases中的各项重新拖动排序,按以下顺序

    2024年02月08日
    浏览(39)
  • 【IOS】Xcode 15.2版本下载 iOS_17 Simulator失败

    Xcode更新15.2自身不带iOS_17 Simulator模拟器的,然而在使用自带的get下载安装会一直在40进度左右出现因为网络问题安装失败的情况,一般这种情况在断点处重试安装也还好,但是每次重试都是需要重新下载,因为本身下载又很慢,又总是在40左右出现此问题,所以只能尝试自行

    2024年02月20日
    浏览(69)
  • xcode15下载ios17模拟器失败

    升级到xcode15后需要安装ios17模拟器 但是在下载过程中会遇到报错 如下图这种 网上搜索了一下发现有人遇到过无法下载的问题,并且在apple官网也有人提出类似问题 https://developer.apple.com/forums/thread/737648 解决方案就是从https://developer.apple.com/download/all/下载ios模拟器到本地 然后执

    2024年02月07日
    浏览(67)
  • Xcode15下载iOS17一直中断解决办法

    目前的 xcode 15 安装时,跟以前有个差别:以往的 xcode 安装时自带了 ide、sdk 等工具包,安装后即可开始开发,而最新的包则被分开成了不同的包,这里以 ios 开发包为例: Xcode_15.xip  和  iOS_17_Simulator_Runtime.dmg 正常下载或更新好Xcode之后,Xcode会提示你下载iOS17,众所周知,

    2024年02月08日
    浏览(48)
  • Xcode 15 Beta和 iOS 17Beta安装

    第一步:打开苹果开发者网站 ,登入自己的开发者账号 第二部:滑到网页最下边找到Xcode 第三步:点击Download,选中Xcode 15 beta    第四步:找到Xcode  15 beta4 ,注意:不要勾选绿框里的选项,不然下载下来没有Xccode 15 Beta的包  第五步:下载完成后,解压,拖到应用程序里 第六

    2024年02月08日
    浏览(49)
  • iOS学习 --- Xcode 15 下载iOS_17.0.1_Simulator失败解决方法

    1.去开发者官网下载安装包 https://developer.apple.com/download/all/?q=iOS%2017 使用浏览器下载。 2.打开终端通过命令添加到xcode 命令如下: sudo xcode-select -s /Applications/Xcode.app(输入开始密码) xcodebuild -runFirstLaunch (等待一小会) xcrun simctl runtime add \\\"/Users/xxxxx/Downloads/iOS_17.0.1_Simulator_Runtime

    2024年02月05日
    浏览(44)
  • Xcode15 iOS 17 Simulator 离线安装,模拟器安装

    Xcode 15 安装包的大小相比之前更小,因为除了 macOS 的 Components,其他都需要动态下载安装,否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库 无法真机和模拟器运行,更无法新建项目。但是由于模拟器安装包过大且不支持断点续传,在经历了在线安装 N 次失败

    2024年02月03日
    浏览(48)
  • 解决更新Xcode 15.2后,下载 iOS_17 Simulator失败

    更新到最新的xcode后,自动下载Simulator总是失败。 解决方法如下: 从官网直接下载: 打开https://developer.apple.com/download/all/?q=ios 下载:IOS 17.2 Simulator Runtime.dmg安装文件 手动安装

    2024年01月20日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包