You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React Native集成react-native-track-player后Android应用构建失败问题

解决React Native安装react-native-track-player后的构建失败问题

我之前也碰到过类似的情况,结合你给出的报错信息,咱们分两步来解决这个问题:

1. 先搞定依赖树解析失败(ERESOLVE错误)

你用yarn addnpm 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=trueandroid.enableJetifier=true是否开启(从报错里看到Jetifier在运行,这部分应该没问题,但还是确认下更稳妥)
  • 可以清理一下Gradle缓存:先进入android目录,执行./gradlew clean,然后回到根目录重新构建
  • 如果你用的是React Native 0.68及以上版本,建议直接用react-native-track-player v3+的版本,兼容性会更好

按照上面的步骤操作,应该就能解决你的构建问题了。

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

火山引擎 最新活动