相同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文件,修改或添加以下配置:
(根据PC内存调整org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8-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
相关产品推荐
相关产品推荐

