React Native集成react-native-track-player后Android应用构建失败问题
解决React Native安装react-native-track-player后的构建失败问题
我之前也碰到过类似的情况,结合你给出的报错信息,咱们分两步来解决这个问题:
1. 先搞定依赖树解析失败(ERESOLVE错误)
你用yarn add和npm i都出现了依赖树无法解析的问题,这说明当前项目的依赖版本和react-native-track-player要求的版本不兼容。可以试试这几个方案:
- 如果你用npm(v7及以上):执行
npm i react-native-track-player --legacy-peer-deps,这个命令会恢复到npm v6的依赖解析逻辑,忽略peer依赖的冲突;要是还是不行,就用npm i react-native-track-player --force强制安装(注意强制安装可能带来潜在的依赖兼容问题,不过大部分情况下能解决当前问题) - 如果你用yarn:执行
yarn add react-native-track-player --ignore-engines --ignore-scripts,或者在项目根目录的package.json里添加"resolutions"字段,手动指定和项目兼容的依赖版本(比如如果是React Native版本冲突,你可以查一下react-native-track-player官方文档里兼容的RN版本,然后在resolutions里锁定对应的版本)
2. 解决ExoPlayer 2.11.4找不到的问题
从构建报错来看,Gradle搜遍了所有配置的仓库都找不到com.google.android.exoplayer:exoplayer-core:2.11.4——这个版本确实比较老,可能已经从主流Maven仓库下架了,有两个办法可以解决:
方案一:给Android项目添加JCenter仓库
旧版本的ExoPlayer是托管在JCenter的,你需要在android/build.gradle文件里把JCenter加进去:
打开android/build.gradle,找到allprojects下的repositories块,添加jcenter():
allprojects { repositories { google() mavenCentral() jcenter() // 新增这一行 maven { url "$rootDir/../node_modules/react-native/android" } maven { url "https://www.jitpack.io" } } }
保存后,回到项目根目录重新执行npx react-native run-android就行。
方案二:升级react-native-track-player到新版本
旧版的react-native-track-player依赖的ExoPlayer版本太老,不如直接装最新稳定版的react-native-track-player,它依赖的ExoPlayer版本更新,也更适配新的React Native版本:
执行对应的安装命令:
# npm用户 npm install react-native-track-player@latest --legacy-peer-deps # yarn用户 yarn add react-native-track-player@latest --ignore-engines
安装完成后再重新构建项目。
额外的小建议
- 检查一下
android/gradle.properties里的android.useAndroidX=true和android.enableJetifier=true是否开启(从报错里看到Jetifier在运行,这部分应该没问题,但还是确认下更稳妥) - 可以清理一下Gradle缓存:先进入
android目录,执行./gradlew clean,然后回到根目录重新构建 - 如果你用的是React Native 0.68及以上版本,建议直接用react-native-track-player v3+的版本,兼容性会更好
按照上面的步骤操作,应该就能解决你的构建问题了。
内容的提问来源于stack exchange,提问作者DerWeisse




