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
相关产品推荐
相关产品推荐

