文章
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(只在编译时使用,不打包)。
- 找到文件:
D:\project\git\xiaoNuoJiaHuApp\node_modules\react-native-sherpa-onnx-offline-tts\android\build.gradle - 修改代码:
打开该文件,搜索
dependencies块。你会看到类似这样的一行:
implementation files('libs/sherpa-onnx-1.10.35.aar')
请将其修改为:
// 改为 compileOnly
compileOnly files('libs/sherpa-onnx-1.10.35.aar')
第二步:在你的主 App 中引入这个 AAR
既然库里不打包了,你的 App 必须负责把这个文件打包进去,否则运行时会闪退。
- 找到文件:
D:\project\git\xiaoNuoJiaHuApp\android\app\build.gradle(注意是app目录下的) - 修改代码:
在
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 的文件会在下次你运行 yarn 或 npm install 时丢失。为了保留这个修复,你需要使用 patch-package。
- 安装工具(如果还没装):
yarn add patch-package postinstall-postinstall --dev
- 生成补丁: 在完成了上面的第一步修改后,运行:
npx patch-package react-native-sherpa-onnx-offline-tts
这会在你的项目根目录生成一个 patches 文件夹,里面记录了你的修改。
3. 验证:
以后每次你运行 yarn,它都会自动应用这个修复,不用再手动改了。