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

Flutter AppCenter构建失败:java.net.URISyntaxException异常求助

Flutter AppCenter构建失败:URISyntaxException 问题解决

问题场景

配置Flutter应用的AppCenter构建后,运行构建时失败,报错核心信息为java.net.URISyntaxException: Illegal character in opaque part。本地Android Studio可正常运行该应用。

错误日志

FAILURE: Build failed with an exception.

 Where:
Settings file '/Users/runner/work/1/s/android/settings.gradle' line: 11

 What went wrong:
A problem occurred evaluating settings 'android'.
> java.net.URISyntaxException: Illegal character in opaque part at index 2: C:\Users\...\Flutter\sdk\flutter_windows_2.8.1-stable\flutter\packages\flutter_tools\gradle\app_plugin_loader.gradle

BUILD FAILED in 14s
Error: /Users/runner/work/1/s/android/gradlew failed with return code: 1
    at ChildProcess.<anonymous> (/Users/runner/work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/1.128.0/node_modules/vsts-task-lib/toolrunner.js:569:30)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:920:16)
    at Socket.<anonymous> (internal/child_process.js:351:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:509:12)
##[error]Error: /Users/runner/work/1/s/android/gradlew failed with return code: 1

相关代码片段

settings.gradle:

include ':app'

def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()

assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }

def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath\packages\flutter_tools\gradle\app_plugin_loader.gradle"

local.properties:

sdk.dir=C:\Users\..\AppData\Local\Android\sdk
flutter.sdk=C:\Users\..\Flutter\sdk\flutter_windows_2.8.1-stable\flutter
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1

原因分析

  1. 路径分隔符跨平台不兼容:
    local.properties中使用了Windows风格的反斜杠\,但AppCenter构建环境为macOS/Linux(从日志中的/Users/runner可判断),这类系统仅支持正斜杠/作为路径分隔符,反斜杠会被识别为非法字符。
  2. Groovy字符串转义问题:
    settings.gradle中拼接路径时用了\,在Groovy语法里反斜杠是转义字符,实际解析后会导致路径格式错误,触发URISyntaxException。
  3. 本地与构建环境差异:
    本地Android Studio运行在Windows环境,支持反斜杠路径,因此无问题;但AppCenter的构建 runner 是类Unix系统,路径规则不同导致报错。

解决方案

1. 修正路径分隔符

将local.properties中的反斜杠\替换为正斜杠/,确保跨平台兼容:

sdk.dir=C:/Users/../AppData/Local/Android/sdk
flutter.sdk=C:/Users/../Flutter/sdk/flutter_windows_2.8.1-stable/flutter
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1

2. 修复settings.gradle的路径拼接

把settings.gradle中的反斜杠\改为正斜杠/:

apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"

3. 优化版本控制(推荐)

local.properties是本地环境配置文件,不应提交到Git仓库。检查项目的.gitignore是否包含local.properties,AppCenter会自动在构建环境中配置Flutter和Android SDK路径,无需手动指定。

内容的提问来源于stack exchange,提问作者Ramachandra Reddy Avula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:45:37