之前有谈过# 再见吧CocoaPods,Swift Package Manager(SPM)即将在Flutter 3.44中成为默认依赖管理器,我也提到了 Fluwx正在适配Swift Package Manager 。经过我的不懈努力,Fluwx终于迎来了6.0.0-preview.7 。从新特性上来,6.0版本只有两个核心变化:
- 支持Scene Delegate
- 支持Swift Package Manager
Scene Delegate没得说,决定权不在你我,再不支持,Apple上不了架。而SPM(Swift Package Manager)的支持,也是顺势而为,因为Cocoapods迟早要退出历史舞台。而且就是因为适配SPM的缘故,这次对Fluwx整个项目的冲击,可谓不小,主要影响在于:
- 项目变成了Monorepo
fluwx_no_pay重出江湖
由于SPM是一个静态的依赖管理工具,所以之前在Cocoapods时,有很多动态魔法在SPM时,无法使用,导致无法动态加载宏,我没有想到更好的解决的方案,只能把fluwx_no_pay的功能分离出来,不再通过pubspec.yaml配置no_pay。类似地,iOS上的自动化脚本都失效了,比如自动填写url scheme、LSApplicationQueriesSchemes、universal_link、debug_logging等等,都不再好用了,迁移到6.0后,需要你自己填写这些。Android上不受影响。
由于我现在没有合适的App用来测试微信相关功能,所以还需要大家一起来测试,有问题能直接提PR是最好的。
下面我简单地介绍一下怎么开发fluwx。
这里我使用了 Melos monorepo ,包含两个 package:fluwx(含微信支付)和 fluwx_no_pay(不含支付,用于通过 App Store 合规审核)。以下步骤适用于想要在本地构建或运行项目的贡献者。
前置要求
- Flutter SDK(stable 渠道)
- Dart SDK ≥ 3.10
- Melos 7.5.1:
dart pub global activate melos 7.5.1 - iOS 开发:Xcode + CocoaPods(
sudo gem install cocoapods)
克隆 & 初始化
bash
git clone https://github.com/OpenFlutter/fluwx.git
cd fluwx
# 安装工作区依赖并链接各 package
dart pub get
melos bootstrap
注意: 仓库使用了 symlink(在
fluwx和fluwx_no_pay之间共享原生源码)。macOS / Linux 下 git 会自动保留 symlink;Windows 下请确保 git 配置了core.symlinks=true。
初始化完成后验证所有 symlink 是否正常:
bash
melos run symlinks:check
运行示例应用
bash
# fluwx(含支付)
cd packages/fluwx/example
flutter pub get
flutter run
# fluwx_no_pay(不含支付)
cd packages/fluwx_no_pay/example
flutter pub get
flutter run
iOS --- CocoaPods 与 SPM
项目同时支持 CocoaPods 和 Swift Package Manager,构建前全局设置集成方式:
bash
# CocoaPods 模式
flutter config --no-enable-swift-package-manager
cd packages/fluwx/example/ios && pod install
# SPM 模式
flutter config --enable-swift-package-manager
分析 & 测试所有 package
bash
melos exec -- flutter analyze
melos exec -- flutter test
最后
来吧,一起测试一下!