React Native集成amazon-ivs-react-native-player Android编译报错求助
解决Amazon IVS React Native Player Android编译时When表达式不穷尽的错误
临时修复(直接修改本地依赖文件)
- 找到本地项目中依赖的模块文件路径:
node_modules/amazon-ivs-react-native-player/android/src/main/kotlin/com/amazonivs/reactnative/AmazonIvsView.kt - 定位到第296行的
when表达式,补充缺失的BUFFERING、IDLE、ENDED分支,或者添加else分支兜底:when (playerState) { PlayerState.PLAYING -> { // 保留原有PLAYING状态的处理逻辑 } PlayerState.PAUSED -> { // 保留原有PAUSED状态的处理逻辑 } PlayerState.BUFFERING -> { // 可选:添加缓冲状态的处理,比如向RN侧发送事件 sendEvent("onBuffering", null) } PlayerState.IDLE -> { // 可选:添加空闲状态的处理逻辑 } PlayerState.ENDED -> { // 可选:添加播放结束的处理,比如发送结束事件 sendEvent("onEnded", null) } else -> {} // 兜底分支,避免编译报错 } - 保存修改后,重新执行
npx react-native run-android
持久化修复(避免依赖更新覆盖修改)
使用patch-package工具给模块打补丁,确保修改不会被后续npm install覆盖:
- 安装依赖:
npm install patch-package --save-dev - 修改完上述文件后,执行命令生成补丁:
npx patch-package amazon-ivs-react-native-player - 项目根目录会生成
patches/amazon-ivs-react-native-player+[模块版本号].patch文件,将该文件提交到版本控制 - 其他开发者拉取代码后,执行
npx patch-package即可自动应用补丁
长期解决建议
向amazon-ivs-react-native-player官方仓库提交Issue,描述该编译错误并附上修复代码,或者直接提交PR帮助官方修复这个问题,避免其他开发者遇到同样的问题
内容的提问来源于stack exchange,提问作者Ugur
相关产品推荐
相关产品推荐

