P0 正确性与工程卫生修复:
- 删除 core/proguard-rules.pro 中全部无效的 -keepclassmembers 规则
(LunarCache.getOrCompute 实为实例 suspend 方法,generateMonthDays 实为
private,签名均不匹配,属 placebo);同时移除 core/build.gradle.kts
release block 内重复的 consumerProguardFiles 声明
- 将 7 处 composeTrace 调用从 CalendarViewModel 移至 Compose 层
(MenuItem.onClick / onMonthClick / BottomCard 回调),VM 不再依赖
android.os.Trace,可在纯 JVM 环境测试无需兜底
- 删除 CalendarViewModel 与 4 个 UI 文件中约 30 处 logd 调用及其辅助
变量/ SideEffect/ DisposableEffect (AnimLog.kt 工具函数保留)
- 删除 CalendarViewModel.getIsoWeekNumber 不可达的 weekNumber < 1 递归分支
- 修正 MainActivity.kt setContent 块缩进错位
- 同步 README: sketch 渲染 GIF→动画 WebP,补提 :macrobenchmark 模块;
删除 AGENTS.md 顶部过时的「README 与实际不符」注释
验证: spotlessApply UP-TO-DATE, testDebugUnitTest 全过,
assembleDebug + assembleRelease (R8) 均成功
52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
# YaYa
|
||
|
||
纯 Android + Jetpack Compose 日历应用,支持农历/节气/节日、个人班次排期,提供月/周/年三种视图。
|
||
|
||
<div>
|
||
<img src="core/src/main/assets/app_icon.webp" width="128" height="128" />
|
||
</div>
|
||
|
||
## 特性
|
||
|
||
- **流畅的视图切换** —— 月视图、周视图、年视图三种模式,拖拽手势驱动月↔周折叠,弹簧动画自动吸附
|
||
- **无限滑动分页** —— 基于 `Int.MAX_VALUE` 的虚拟分页,前后无边界翻页
|
||
- **完整中式日历** —— 公历 + 农历 + 二十四节气 + 传统节日,ISO 8601 周起始(周一)
|
||
- **个人排班周期** —— 自定义工作/休息循环,与公共节假日独立
|
||
- **Material 3 设计** —— 动态配色,深色模式
|
||
|
||
## 技术栈
|
||
|
||
- Kotlin 2.3 · Jetpack Compose · Material 3
|
||
- `kotlinx-datetime` 处理所有日期逻辑
|
||
- `tyme4kt` 提供农历、节气与传统节日
|
||
- `sketch` 渲染动画 WebP
|
||
- 三模块:`:core`(UI + 逻辑) · `:app`(薄壳) · `:macrobenchmark`(Baseline Profile 生成)
|
||
|
||
## 构建
|
||
|
||
```bash
|
||
# Debug
|
||
./gradlew :app:assembleDebug # 构建 debug APK
|
||
./gradlew :app:installDebug # 安装 debug APK 到设备
|
||
|
||
# Release
|
||
./gradlew :app:assembleRelease # 构建 release APK
|
||
./gradlew :app:installBenchmark # 安装 benchmark(release + 可调试)APK
|
||
|
||
# 测试
|
||
./gradlew :core:testDebugUnitTest # 运行全部测试
|
||
./gradlew :core:testDebugUnitTest --tests "plus.rua.project.ui.CalendarUtilsTest" # 运行单个测试
|
||
|
||
# Baseline Profile(需要连接设备)
|
||
./gradlew :macrobenchmark:updateBaselineProfile # 一键生成 + 自动复制到 :core
|
||
./gradlew :macrobenchmark:connectedBenchmarkAndroidTest # 仅运行基准测试
|
||
|
||
# 性能 Profiling(需要连接设备)
|
||
./scripts/profile.sh # 默认 8 秒
|
||
./scripts/profile.sh 15 # 自定义时长
|
||
```
|
||
|
||
构建产物位于 `app/build/outputs/apk/<variant>/` 目录。
|
||
|
||
线条小狗表情包来自 https://www.douban.com/group/topic/264788645/?_i=9181692phrDzjR,9241256phrDzjR
|