Moodiary手动编译的版本不一致问题修复

Moodiary手动编译的版本不一致问题修复
LeKMoodiary手动编译的版本不一致问题修复
- Flutter Version: 3.32.1
- Dart Version: 3.8..1
问题复现与修复
使用fvm flutter pub get
命令后报错如下:
1 | >> Could not find a file named "packages/isar_flutter_libs/pubspec.yaml" in https://github.com/ZhuJHua/isar fc323a5660b9987fd4d137f71b0d3dbad0915e4f. |
在pubspec.yaml
文件中将:
1 | isar_flutter_libs: |
修改为:
1 | isar_flutter_libs: |
再次运行fvm flutter pub get
命令后报错如下:
1 | >> Because every version of isar_flutter_libs from git depends on isar 4.0.0-zjh.1 and moodiary depends on isar |
注意到,moodiary
项目依赖的isar_flutter_libs
所在的项目代码处,在https://github.com/ZhuJHua/isar/commit/d8011e7fb1357a6f1053a5a3a3947a2bbc2b2b51
这次提交中,isar
库的版本从4.0.0-dev.14
修改为4.0.0-zjh.1
,而moodiary
项目的pubspec.yaml
中依赖的isar
库仍然为4.0.0-dev.14
,两者产生版本冲突。
尝试在pubspec.yaml
中修改为isar: 4.0.0-zjh.1
后仍然报错:
1 | >> Because moodiary depends on isar 4.0.0-zjh.1 which doesn't match any versions, version solving failed. |
修改为:
1 | isar: |
报错:
1 | >> Because every version of isar_flutter_libs from git depends on isar from hosted and moodiary depends on isar from git, |
原因推测:ZhuJHua 仓库中
isar_flutter_libs
的pubspec.yaml
要从pub.dev去拉isar 4.0.0-zjh.1
,而不是项目里声明的 Git 版本。
在此基础上添加:
1 | dependency_overrides: |
最终正常通过编译。
此外, Windows 平台 Flutter 构建报错信息中,在自定义插件 gal_plugin
的链接阶段,提示多个 LNK2019 无法解析的外部符号
,这些符号来自 WinRT (Windows Runtime),而链接失败的原因为插件项目没有链接 windowsapp.lib
,所以编译器找不到这些 WinRT API 的实现。
修复方式为找到对应文件:
1 | moodiary/ |
在 CMakeLists.txt
中将target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)
修改为:
1 | target_link_libraries(${PLUGIN_NAME} |
但这个报错可能只是我个人的环境问题,将解决方法放于此仅供参考。