文章

react-native-sherpa-onnx-offline-tts 解决编译出错

浏览: 34评论: 0发布时间: 2026-01-07

这个问题非常典型,是一个 Android 构建规则的冲突。

错误原因

报错核心句是:

Direct local .aar file dependencies are not supported when building an AAR.

简单解释: 你使用的第三方库 react-native-sherpa-onnx-offline-tts 试图将一个本地的 .aar 文件(sherpa-onnx-1.10.35.aar)打包进它自己的库里。但是,新版的 Android 构建工具(Gradle Plugin)严厉禁止库项目(Library Module)直接包含本地 AAR 文件,因为它会导致依赖关系断裂。

你需要“手动修复”这个第三方库的引用方式。


解决方案 (两步走)

我们需要把这个 AAR 文件的引用从“库内部私有”改成“由主 App 统一引入”。

第一步:修改 node_modules 中的库配置

我们需要把该库对 aar 的依赖从 implementation 改为 compileOnly(只在编译时使用,不打包)。

  1. 找到文件D:\project\git\xiaoNuoJiaHuApp\node_modules\react-native-sherpa-onnx-offline-tts\android\build.gradle
  2. 修改代码: 打开该文件,搜索 dependencies 块。你会看到类似这样的一行:
implementation files('libs/sherpa-onnx-1.10.35.aar')
 

请将其修改为:

// 改为 compileOnly
compileOnly files('libs/sherpa-onnx-1.10.35.aar')
 

第二步:在你的主 App 中引入这个 AAR

既然库里不打包了,你的 App 必须负责把这个文件打包进去,否则运行时会闪退。

  1. 找到文件D:\project\git\xiaoNuoJiaHuApp\android\app\build.gradle (注意是 app 目录下的)
  2. 修改代码: 在 dependencies 块中添加下面这一行(注意路径):
dependencies {
    // ... 其他依赖
 
    // 手动引入 Sherpa Onnx AAR
    implementation files('../../node_modules/react-native-sherpa-onnx-offline-tts/android/libs/sherpa-onnx-1.10.35.aar')
}
 

第三步:重新构建

完成上述修改后,清理并重新运行:

cd android
./gradlew clean
cd ..
npx expo run:android --variant release
 

如何让修复永久生效? (重要)

直接修改 node_modules 的文件会在下次你运行 yarnnpm install 时丢失。为了保留这个修复,你需要使用 patch-package

  1. 安装工具(如果还没装):
yarn add patch-package postinstall-postinstall --dev
 
  1. 生成补丁: 在完成了上面的第一步修改后,运行:
npx patch-package react-native-sherpa-onnx-offline-tts
 

这会在你的项目根目录生成一个 patches 文件夹,里面记录了你的修改。 3. 验证: 以后每次你运行 yarn,它都会自动应用这个修复,不用再手动改了。