集成react-native-track-player出现RATING_HEART空对象及AppRegistry报错如何解决?
问题解决方案
报错的核心根因为React Native v0.64升级至v0.65版本时,官方默认移除了jcenter仓库配置,但react-native-track-player的部分底层原生依赖仍托管在jcenter,导致安卓构建阶段无法拉取对应依赖包,原生模块没有被正确编译注入,因此JS层调用TrackPlayer时会拿到null值触发首个报错,后续的AppRegistry报错是初始化阶段异常抛出后的连锁错误。你之前执行的JS端依赖重装、缓存清理操作都无法解决该问题,因为问题根源在安卓原生构建的仓库配置环节。
修复步骤
- 原生React Native项目修复:
- 打开安卓项目配置文件
android/build.gradle,找到allprojects.repositories配置段,新增jcenter仓库地址,配置参考如下:
allprojects { repositories { // 新增jcenter仓库配置,放在mavenCentral之前 maven { url 'https://jcenter.bintray.com' } mavenCentral() maven { url "https://www.jitpack.io" } // 其余原有仓库配置保持不变即可 } }- 进入安卓目录执行构建缓存清理命令:
- Mac/Linux环境:
./gradlew clean - Windows环境:
gradlew clean
- Mac/Linux环境:
- 回到项目根目录重置Metro缓存后重启应用:
react-native start --reset-cache
- 打开安卓项目配置文件
- Expo工作流项目修复:
react-native-track-player包含自定义原生代码,不支持直接在Expo Go中运行,需先执行expo prebuild生成原生工程,再按照上述原生项目的步骤修改gradle配置后重新运行。
内容的提问来源于stack exchange,提问作者Micha Brugger
相关产品推荐
相关产品推荐

