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

M1 Pro构建RN iOS时jw-media-player报Expected a type错误

问题
  • React Native iOS构建阶段抛出Expected a type类型错误,经定位报错来源为第三方依赖react-native-jw-media-player
  • 同项目此前在M1芯片Mac mini设备上可正常构建运行,未出现过同类报错
  • 当前开发环境:
    • 设备:Macbook M1 Pro
    • Xcode版本:13.4.1
  • 错误截图:
    Expected a type编译错误截图

解决方案

报错核心原因有两点:一是Xcode 13.4.1版本收紧了Objective-C头文件的类型检查规则,react-native-jw-media-player部分头文件未对依赖的JWPlayer类型做前置声明,触发类型识别失败;二是M1 Pro芯片的编译架构兼容配置缺失,导致依赖库编译时头文件搜索路径异常。按以下步骤操作即可修复:

  1. 补全库头文件的前置类型声明
  • 打开iOS工程下的Pods/Development Pods/react-native-jw-media-player目录,找到RNJWPlayerView.h文件
  • 在#import <React/RCTView.h>代码行下方添加两行前置声明:
@class JWPlayerController;
@class JWError;
  • 打开同目录下的RNJWPlayerNativeView.h文件,检查所有JWPlayer相关类型的引用,缺失前置声明的按上述格式补上即可。
  1. 更新Podfile架构与路径配置
    打开iOS根目录的Podfile文件,在post_install钩子中添加如下配置:
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # 适配M1系列芯片模拟器/真机编译架构
      config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = ''
      config.build_settings['VALID_ARCHS'] = 'arm64 armv7 x86_64'
      # 给jw播放器配置正确的头文件搜索路径
      if target.name == 'react-native-jw-media-player'
        config.build_settings['HEADER_SEARCH_PATHS'] ||= ['$(inherited)', '${PODS_ROOT}/JWPlayer_iOS_SDK']
      end
    end
  end
end
  1. 清理缓存重新编译
    在终端执行以下命令重新安装依赖:
cd ios
pod deintegrate
pod install --repo-update
cd ..

打开Xcode后按Cmd + Shift + K清理编译缓存,删除项目对应的Derived Data文件夹后重新执行构建即可。


内容的提问来源于stack exchange,提问作者Harish Jangra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:27:22