上海第二工业大学校园综合服务应用
工大聚合(SSPU-AllinOne)是面向上海第二工业大学师生的校园综合服务应用,基于 Flutter + Fluent UI 构建,公开 Release 面向 Android / iOS / macOS / Linux / Windows。所有数据仅保留在本地,不上传至任何云端服务。
中文语言环境下,应用窗口、启动器、安装器和关于页默认显示为“工大聚合”;英文语言环境和技术标识仍使用 SSPU-AllinOne。包名、Bundle ID、可执行文件名、仓库名与 GitHub Release 资产命名不随显示名变化。
- Flutter SDK >= 3.44.0
- Dart SDK 3.12.0(随 Flutter 3.44.0 提供)
- 各平台对应的开发工具(详见 使用文档)
git clone https://github.com/Qintsg/SSPU-AllinOne.git
cd SSPU-AllinOne
flutter pub get
flutter runflutter build apk # Android APK
flutter build windows # Windows
flutter build macos # macOS
flutter build linux # Linux完整发布规范、Tag 规则、资产命名、发布矩阵、Release Notes 模板与门槛,统一见 docs/RELEASE.md。
当前公开 Release 仍然通过带 release 标签的 PR merge 自动触发,版本号只读取 pubspec.yaml。
- 本仓库支持通过
android/key.properties加载本地签名配置;当前工作区已生成一个本机自签名 keystore:android/app/sspu-release.jks android/key.properties与.jks文件默认不会提交;若需在新机器复用,请参考android/key.properties.example重新生成或复制 keystore- 当前 Android 应用 ID 为
cn.qintsg.sspu_allinone。仅改应用名不需要更换 keystore;本次包名迁移后,Android 会把新包名识别为另一款应用,既有 keystore 可继续用于签名,但不能作为旧包名应用的原地升级。 - GitHub Actions 进行 Android release build 时,不依赖仓库内签名文件;可通过 Secrets 在运行时下发签名材料:
ANDROID_KEYSTORE_BASE64ANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIASANDROID_KEY_PASSWORD - 公开 Release 默认上传分架构 APK:
SSPU-AllinOne-v{version}-android-arm64-v8a.apkSSPU-AllinOne-v{version}-android-armeabi-v7a.apkSSPU-AllinOne-v{version}-android-x86_64.apkSSPU-AllinOne-v{version}-android-x86.apk - 构建命令:
flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64,android-x64,android-x86
flutter build appbundle --release- 产物位置:
build/app/outputs/flutter-apk/app-arm64-v8a-release.apkbuild/app/outputs/flutter-apk/app-armeabi-v7a-release.apkbuild/app/outputs/flutter-apk/app-x86_64-release.apkbuild/app/outputs/flutter-apk/app-x86-release.apkbuild/app/outputs/bundle/release/app-release.aab - 使用方式:
app-*-release.apk可直接分发安装(根据设备架构选择)app-release.aab用于应用商店上架,不适合直接本地安装
- 构建命令:
flutter build windows --release- 产物位置:
build/windows/x64/runner/Release/build/windows/arm64/runner/Release/ - 使用方式:
将
x64架构的整个Release/目录连同其中的 DLL 和data/一起分发;直接运行目录中的sspu_allinone.exeRelease workflow 会同时生成:SSPU-AllinOne-v{version}-windows-x64-setup.exeSSPU-AllinOne-v{version}-windows-x64-portable.zipSSPU-AllinOne-v{version}-windows-arm64-setup.exeSSPU-AllinOne-v{version}-windows-arm64-portable.zip
- 构建命令:
flutter build linux --release- 产物位置:
build/linux/x64/release/bundle/build/linux/arm64/release/bundle/ - 使用方式:
打包并分发整个
bundle/目录;目标机器上运行./sspu_allinone对公开 Release,workflow 会统一生成:SSPU-AllinOne-v{version}-linux-x64.AppImageSSPU-AllinOne-v{version}-linux-x64.debSSPU-AllinOne-v{version}-linux-x64.rpmSSPU-AllinOne-v{version}-linux-x64.tar.gzSSPU-AllinOne-v{version}-linux-arm64.AppImageSSPU-AllinOne-v{version}-linux-arm64.debSSPU-AllinOne-v{version}-linux-arm64.rpmSSPU-AllinOne-v{version}-linux-arm64.tar.gz
- 构建命令:
flutter build macos --release- 产物位置:
build/macos/Build/Products/Release/ - 使用方式:
分发生成的
.app包;首次运行若被系统拦截,需要在"系统设置 → 隐私与安全性"中手动放行 公开 Release 当前默认提供多架构 DMG:SSPU-AllinOne-v{version}-macos-arm64.dmgSSPU-AllinOne-v{version}-macos-x86_64.dmg
- 构建命令:
flutter build ios --release --no-codesign- 产物位置:
build/ios/iphoneos/Runner.app - 使用方式:
未签名
.app仅可用于 Xcode 模拟器运行;真机安装需要 Apple Developer 账号签名 公开 Release 当前默认提供未签名 .app:SSPU-AllinOne-v{version}-ios-arm64.app
本仓库配置了多层安全扫描:
| 扫描工具 | 用途 | 触发条件 |
|---|---|---|
| CodeQL | 静态代码分析(Actions、Python、C/C++) | push / PR / 每周 |
| Semgrep | 安全规则扫描(1000+ 社区规则) | push / PR / 每周 |
| OSV Scanner | 依赖漏洞扫描 | 依赖变更 / 每周 |
| Secret Scanning | 密钥泄漏检测(Gitleaks) | push / PR / 每周 |
| Dependency Review | 依赖供应链审查 | PR 依赖变更 |
| OSSF Scorecard | 供应链安全态势评估 | push to main / 每周 |