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

相同Flutter代码可在笔记本构建Android应用,PC端构建失败求助

问题描述

我用VS Code + Flutter开发Android应用,相同代码在笔记本上能正常编译运行debug和release版本,但移植到PC端后构建失败,抛出异常。怀疑是硬件问题,但未发现异常。

已尝试的常规解决方案:清理Gradle、清理Flutter、删除.gradle文件夹等。

JVM崩溃日志本地路径:C:/Users/geoff/Documents/Projects/arcadious/android/hs_err_pid22212.log

构建失败日志
正在切换当前工作目录至:C:\Users\geoff\Documents\Projects\arcadious

期望找到字体(MaterialIcons, packages/cupertino_icons/CupertinoIcons),但仅找到(MaterialIcons)。这通常意味着你在IconData类中引用了字体族,但未在pubspec.yaml的assets部分中包含它们,缺少对应的包,或者未设置"uses-material-design: true"。
字体资源"MaterialIcons-Regular.otf"已被摇树优化,大小从1645184字节缩减至2168字节(减少99.9%)。可通过在构建应用时添加--no-tree-shake-icons标志禁用摇树优化。
注意:部分输入文件使用或覆盖了已废弃的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:部分输入文件使用或覆盖了已废弃的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:C:\Users\geoff\AppData\Local\Pub\Cache\hosted\pub.dev\google_mobile_ads-5.1.0\android\src\main\java\io\flutter\plugins\googlemobileads\FlutterRequestAgentProvider.java使用或覆盖了已废弃的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
从守护进程收到的消息表明守护进程已消失。
构建请求已发送:Build{id=f21c7b8c-f7da-4c61-b675-02c1de5caa0e, currentDir=C:\Users\geoff\Documents\Projects\arcadious\android}
尝试读取守护进程日志的最后消息...
守护进程PID:22212
  日志文件:C:\Users\geoff\.gradle\daemon\8.10.2\daemon-22212.out.log
----- 守护进程日志最后20行 - daemon-22212.out.log -----
2024-09-27T13:47:04.304+0800 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] 已获取守护进程地址注册表的锁。
2024-09-27T13:47:04.305+0800 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] 释放守护进程地址注册表的锁。
2024-09-27T13:47:04.305+0800 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] 重置空闲计时器
2024-09-27T13:47:04.305+0800 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] 守护进程正在运行。等待状态变更。
2024-09-27T13:47:04.305+0800 [INFO] [org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy] 守护进程即将开始构建Build{id=f21c7b8c-f7da-4c61-b675-02c1de5caa0e, currentDir=C:\Users\geoff\Documents\Projects\arcadious\android}。正在分发构建启动信息...
2024-09-27T13:47:04.305+0800 [DEBUG] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] 线程35:分发org.gradle.launcher.daemon.protocol.BuildStarted@10ae6077
2024-09-27T13:47:04.306+0800 [DEBUG] [org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment] 正在配置环境变量:[PATH, USERDOMAIN_ROAMINGPROFILE, PROCESSOR_LEVEL, SYSTEMDRIVE, SESSIONNAME, ALLUSERSPROFILE, PROCESSOR_ARCHITECTURE, VSCODE_GIT_IPC_HANDLE, DRIVERDATA, PROGRAMFILES, VSCODE_INJECTION, EFC_8168, PSMODULEPATH, COLORTERM, PROGRAMDATA, DIRNAME, USERNAME, VSCODE_GIT_ASKPASS_NODE, TERM_PROGRAM_VERSION, CMD_LINE_ARGS, GIT_ASKPASS, CHROME_CRASHPAD_PIPE_NAME, EXIT_WITH_ERRORLEVEL, VSCODE_STABLE, FPS_BROWSER_USER_PROFILE_STRING, ONEDRIVE, APP_HOME, MINGIT_PATH, PATHEXT, SNAPSHOT_PATH, SHARED_BIN, WINDIR, ORIGINAL_XDG_CURRENT_DESKTOP, HOMEPATH, PROCESSOR_IDENTIFIER, PUBLIC, CACHE_DIR, ZES_ENABLE_SYSMAN, _SKIP, LOCALAPPDATA, COMMONPROGRAMFILES(X86), USERDOMAIN, DART_SDK_PATH, FPS_BROWSER_APP_PROFILE_STRING, LOGONSERVER, JAVA_HOME, FLUTTER_TOOLS_DIR, PROMPT, PROGRAMFILES(X86), FLUTTER_ROOT, LANG, VSCODE_GIT_ASKPASS_MAIN, =C:, APPDATA, PROGRAMW6432, SYSTEMROOT, JAVA_EXE, VSCODE_GIT_ASKPASS_EXTRA_ARGS, DART, OS, TERM_PROGRAM, COMMONPROGRAMW6432, COMPUTERNAME, COMMONPROGRAMFILES, COMSPEC, PROCESSOR_REVISION, CLASSPATH, VSCODE_NONCE, APP_BASE_NAME, TEMP, FLUTTER_ALREADY_LOCKED, HOMEDRIVE, USERPROFILE, TMP, NUMBER_OF_PROCESSORS]
2024-09-27T13:47:04.308+0800 [DEBUG] [org.gradle.launcher.daemon.server.exec.LogToClient] 即将开始通过连接向客户端转发所有日志。
2024-09-27T13:47:04.308+0800 [INFO] [org.gradle.launcher.daemon.server.exec.LogToClient] 客户端现在将接收来自守护进程(PID:22212)的所有日志。守护进程日志文件:C:\Users\geoff\.gradle\daemon\8.10.2\daemon-22212.out.log
2024-09-27T13:47:04.309+0800 [INFO] [org.gradle.launcher.daemon.server.exec.LogAndCheckHealth] 在新守护进程中启动构建 [内存:4 GiB]
2024-09-27T13:47:04.310+0800 [DEBUG] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] 守护进程已开始执行构建。
2024-09-27T13:47:04.310+0800 [DEBUG] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] 使用守护进程上下文执行构建:DefaultDaemonContext[uid=a6a36e05-9676-4584-a054-dd5be7915c14,javaHome=C:\Program Files\Android\Android Studio\jbr,javaVersion=17,javaVendor=JetBrains s.r.o.,daemonRegistryDir=C:\Users\geoff\.gradle\daemon,pid=22212,idleTimeout=10800000,priority=NORMAL,applyInstrumentationAgent=true,nativeServicesMode=ENABLED,daemonOpts=-XX:MaxMetaspaceSize=2G,-XX:+HeapDumpOnOutOfMemoryError,--add-opens=java.base/java.util=ALL-UNNAMED,--add-opens=java.base/java.lang=ALL-UNNAMED,--add-opens=java.base/java.lang.invoke=ALL-UNNAMED,--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED,--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED,--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED,--add-opens=java.base/java.nio.charset=ALL-UNNAMED,--add-opens=java.base/java.net=ALL-UNNAMED,--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED,-Xmx4G,-Dfile.encoding=windows-1252,-Duser.country=SG,-Duser.language=en,-Duser.variant]
期望找到字体(MaterialIcons, packages/cupertino_icons/CupertinoIcons),但仅找到(MaterialIcons)。这通常意味着你在IconData类中引用了字体族,但未在pubspec.yaml的assets部分中包含它们,缺少对应的包,或者未设置"uses-material-design: true"。
字体资源"MaterialIcons-Regular.otf"已被摇树优化,大小从1645184字节缩减至2168字节(减少99.9%)。可通过在构建应用时添加--no-tree-shake-icons标志禁用摇树优化。
注意:部分输入文件使用或覆盖了已废弃的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:部分输入文件使用或覆盖了已废弃的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
注意:C:\Users\geoff\AppData\Local\Pub\Cache\hosted\pub.dev\google_mobile_ads-5.1.0\android\src\main\java\io\flutter\plugins\googlemobileads\FlutterRequestAgentProvider.java使用或覆盖了已废弃的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。----- 守护进程日志结束 -----

找到JVM崩溃日志:file:///C:/Users/geoff/Documents/Projects/arcadious/android/hs_err_pid22212.log

失败:构建因异常终止。

* 错误原因:
Gradle构建守护进程意外消失(可能被杀死或崩溃)

* 建议尝试:
> 使用--stacktrace选项获取堆栈跟踪。
> 使用--info或--debug选项获取更多日志输出。
> 使用--scan选项获取完整分析。
> 访问https://help.gradle.org获取更多帮助。
正在运行Gradle任务'assembleRelease'...                           34.1s
Gradle任务assembleRelease执行失败,退出码1
解决方案

1. 修复字体依赖警告

日志中提示缺少CupertinoIcons字体,可能间接影响构建稳定性:

  • 检查pubspec.yaml,确保添加cupertino_icons依赖:
    dependencies:
      cupertino_icons: ^1.0.6
    
  • 确认pubspec.yaml中包含uses-material-design: true配置
  • 执行flutter pub get更新依赖

2. 调整Gradle守护进程内存配置

JVM崩溃大概率和内存分配不合理有关:

  • 打开项目根目录下的gradle.properties文件,修改或添加以下配置:
    org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    
    (根据PC内存调整-Xmx值,4G内存PC设为2048m,8G以上可设为4096m)

3. 临时禁用Gradle守护进程测试

直接关闭守护进程,规避崩溃问题:

  • 终端执行构建命令时添加参数:
    flutter build apk --no-gradle-daemon
    

4. 统一JDK版本

确保PC上的JDK版本和笔记本一致:

  • 终端执行java -version查看版本,推荐使用Android Studio自带的JBR(路径通常为C:\Program Files\Android\Android Studio\jbr)
  • 配置环境变量JAVA_HOME指向该JBR路径,避免使用其他版本JDK

5. 清理系统临时文件

Windows临时文件可能干扰构建:

  • 删除C:\Users\geoff\AppData\Local\Temp下的临时文件
  • 重启PC后重新执行构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:12:01