You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native项目Xcode 15构建报错:存储属性无法用@available标记不可用

解决Xcode 15下R2Streamer存储属性@available不可用的编译错误

问题原因

Xcode 15附带的Swift 5.9编译器严格执行语法规则:存储属性不能用@available(*, unavailable)标记,而旧版R2Streamer的代码里存在这种写法,导致编译失败。

解决方案

1. 临时修改R2Streamer源码(快速生效)

  • 找到报错文件:ios/Pods/R2Streamer/Sources/Streamer/Server/PublicationServer.swift
  • 定位到第364行的存储属性,把@available(*, unavailable)标记移除:
    • 如果该属性已经不再使用,直接注释或删除整行代码;
    • 如果需要保留定义,将@available(*, unavailable)替换为@available(*, deprecated, message: "该属性已废弃,请勿使用")(deprecated允许用于存储属性)。

示例修改:

// 原错误代码
@available(*, unavailable)
private let oldUnusedProperty: String

// 修改后(二选一)
// 1. 直接注释/删除
// private let oldUnusedProperty: String

// 2. 改为废弃标记
@available(*, deprecated, message: "该属性已废弃,请勿使用")
private let oldUnusedProperty: String

2. 升级依赖到兼容版本

  • 优先检查react-native-readium是否有更新版本,新版本可能已经同步修复了R2Streamer的兼容性问题。更新package.json里的依赖版本后,执行:
    npm install
    cd ios && pod install
    
  • 如果react-native-readium未更新,直接在Podfile中指定修复过该问题的R2Streamer分支:
    pod 'R2Streamer', :git => 'https://github.com/readium/r2-streamer-swift.git', :branch => 'develop'
    
    然后执行:
    pod install --repo-update
    

3. 升级CocoaPods版本

你的CocoaPods版本1.12.1过于老旧,对Xcode 15的兼容性不足。升级到最新稳定版:

sudo gem install cocoapods

之后删除Podfile.lock,重新执行pod install。

4. 调整Swift版本(备选)

打开Xcode的Pods工程,找到R2Streamer目标,在Build Settings中搜索Swift Language Version,尝试设置为Swift 5.7或更低版本,绕过新编译器的语法检查。注意这可能带来其他兼容性问题,仅作为临时备选方案。

内容的提问来源于stack exchange,提问作者Bilal P Shamsudeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:33:33