You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo run:Android执行失败,Gradle报字符串索引越界错误求助

问题:Expo React Native 安卓构建失败(settings.gradle 字符串索引越界)

尝试在Android设备上运行Expo React Native应用时,先执行了expo prebuild(出现报错但未处理),之后执行expo run:android时遭遇Gradle构建失败,错误提示settings.gradle第6行字符串索引越界:0。

错误日志

FAILURE: Build failed with an exception.

* Where:
Settings file '/Desktop/projects/'[PROJECT NAME]'/android/settings.gradle' line: 6

* What went wrong:
A problem occurred evaluating settings '[PROJECT NAME]'.
> String index out of range: 0

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 770ms
/Desktop/projects/'[PROJECT NAME]'/android/gradlew exited with non-zero code: 1
Error: /Desktop/projects/'[PROJECT NAME]'/android/gradlew exited with non-zero code: 1
    at ChildProcess.completionListener (/usr/local/lib/node_modules/expo-cli/node_modules/@expo/spawn-async/src/spawnAsync.ts:65:13)
    at Object.onceWrapper (node:events:642:26)
    at ChildProcess.emit (node:events:527:28)
    at maybeClose (node:internal/child_process:1092:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
    ...
    at spawnAsync (/usr/local/lib/node_modules/expo-cli/node_modules/@expo/spawn-async/src/spawnAsync.ts:26:19)
    at spawnGradleAsync (/usr/local/lib/node_modules/expo-cli/src/commands/run/android/spawnGradleAsync.ts:83:18)
    at assembleAsync (/usr/local/lib/node_modules/expo-cli/src/commands/run/android/spawnGradleAsync.ts:57:16)
    at actionAsync (/usr/local/lib/node_modules/expo-cli/src/commands/run/android/runAndroid.ts:143:9)

涉及的settings.gradle文件内容

rootProject.name = '[PROJECT NAME]'

apply from: new File([\"node\", \"--print\", \"require.resolve('expo/package.json')\"].execute(null, rootDir).text.trim(), \"../scripts/autolinking.gradle\");
useExpoModules()

apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");
applyNativeModulesSettingsGradle(settings)

include ':app'

原因分析与解决办法

核心原因

settings.gradle文件中第3、6行的数组参数使用了转义引号\",属于语法错误。Gradle执行["node", ...].execute()时,转义引号会导致node命令无法正确执行,返回空字符串;后续调用.text.trim()后得到长度为0的字符串,访问索引0时触发"字符串索引越界"错误。这一问题根源是之前expo prebuild报错未处理,生成了有语法问题的配置文件。

修复步骤

  1. 手动修正settings.gradle语法:
    将文件中所有的[\"替换为[",\"]替换为"],修正后的关键行应为:

    apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
    
    apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
    
  2. 重新生成配置文件(可选):
    如果手动修正后仍有问题,删除项目根目录下的android文件夹,执行expo prebuild --clean重新生成安卓配置文件(确保这次prebuild过程无报错)。

  3. 重新构建项目:
    执行expo run:android重新启动构建流程。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:20:29