mapleafgo / clash-for-flutter

Clash的桌面客户端,支持 windows、linux、macos
MIT License
853 stars 124 forks source link

flutter 小白,请问如何在 Windows 上编译? #4

Closed Sciroccogti closed 3 years ago

Sciroccogti commented 3 years ago

尝试编译了一下,有很多关于类似 main.mapper.g.dart 的报错,似乎是需要提前进行编译?

Launching lib\main.dart on Windows in debug mode...
Building Windows application...
lib/main.dart(7,8): error GBB7C8005: Error when reading 'lib/main.mapper.g.dart': 绯荤粺鎵句笉鍒版寚瀹氱殑鏂囦欢銆? [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/source/global_config.dart(20,6): error GBB7C8005: Error when reading 'lib/app/source/global_config.g.dart': 绯荤粺鎵句笉鍒版寚瀹氱殑鏂囦欢銆? [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/pages/proxys/model/proxys_model.dart(6,6): error GBB7C8005: Error when reading 'lib/app/pages/proxys/model/proxys_model.g.dart': 绯荤粺鎵句笉鍒版寚瀹氱殑鏂囦欢銆? [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/source/global_config.dart(20,6): error GF2BD9131: Can't use 'lib/app/source/global_config.g.dart' as a part, because it has no 'part of' declaration. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/pages/proxys/model/proxys_model.dart(6,6): error GF2BD9131: Can't use 'lib/app/pages/proxys/model/proxys_model.g.dart' as a part, because it has no 'part of' declaration. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/source/global_config.dart(22,43): error G7D2AEF3C: Type '_$GlobalConfig' not found. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/pages/proxys/model/proxys_model.dart(8,39): error G7D2AEF3C: Type '_$ProxysModel' not found. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/pages/proxys/model/proxys_model.dart(8,7): error GA3B90A72: The type '_$ProxysModel' can't be mixed in. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/app/source/global_config.dart(22,7): error GA3B90A72: The type '_$GlobalConfig' can't be mixed in. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
lib/main.dart(10,3): error GB1B8BC88: Method not found: 'initializeJsonMapper'. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
/D:/src/flutter/.pub-cache/hosted/pub.flutter-io.cn/device_preview-0.5.5/lib/src/views/device_preview_style.dart(86,42): error GBF4691A2: No named parameter with the name 'nullOk'. [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(238,5): error MSB8066: “E:\CODES\clash_for_flutter\build\windows\CMakeFiles\7439d1e976dd7045d162e59478616393\flutter_windows.dll.rule;E:\CODES\clash_for_flutter\build\windows\CMakeFiles\8fde331e8cec18d55749bfa0b3fe29eb\flutter_assemble.rule”的自定义生成已退出,代码为 1。 [E:\CODES\clash_for_flutter\build\windows\flutter\flutter_assemble.vcxproj]
Exception: Build process failed.
mapleafgo commented 3 years ago

项目中使用了dart_json_mapper这个需要build_runner的支持(已经在项目中引用),最简单的就是在项目编写中开启下面的命令

pub run build_runner watch

或者每次启动前,先执行下

pub run build_runner build

Sciroccogti commented 3 years ago

明白了,感谢!

不过目前还有 依赖项不支持 Nullsafety,故尚未能在 flutter >= 1.24 下编译成功。

mapleafgo commented 3 years ago

@Sciroccogti 版本更新那么快呀,我是跟着稳定版走的。现在才1.22.5

Sciroccogti commented 3 years ago

@Sciroccogti 版本更新那么快呀,我是跟着稳定版走的。现在才1.22.5

害,我这默认下载似乎就是 1.26,好像是因为要启用 Desktop 版,得用 Dev 分支。

mapleafgo commented 3 years ago

@Sciroccogti 我这里用的不是官方的桌面版噢,我这里用的是go-flutter

Sciroccogti commented 3 years ago

@Sciroccogti 我这里用的不是官方的桌面版噢,我这里用的是go-flutter

啊对哦。。。怪不得

Sciroccogti commented 3 years ago

pub run build_runner build

根据 https://github.com/flutter/flutter/issues/19049#issuecomment-402287617 ,命令似乎已经更改为 flutter packages pub run build_runner build lib

Sciroccogti commented 3 years ago

已经能够在 Ubuntu 20.04 上编译,这里记录一下环境和方法。

运行

flutter packages pub run build_runner build lib
hover build linux

文件生成在 ./go/build/outputs/linux-release/

这里附上我编译的 clash_for_flutter-0331-linux.zip

mapleafgo commented 3 years ago

其实

flutter pub run build_runner build

依然可以的,但在这之前尽量先运行

flutter pub get

同步更新你的依赖