3.0 KiB
3.0 KiB
开发指南
性能追踪
使用 scripts/profile.sh 一键抓取 Perfetto trace、帧统计和内存快照。
# 默认抓取 8 秒
./scripts/profile.sh
# 抓取 15 秒
./scripts/profile.sh 15
# 应用已在运行时,不自动启动
./scripts/profile.sh --no-launch
输出文件保存在 logs/ 目录:
| 文件 | 说明 |
|---|---|
trace_*.perfetto-trace |
Perfetto trace,在 https://ui.perfetto.dev 打开 |
framestats_*.txt |
GPU 帧统计 |
meminfo_*.txt |
内存快照 |
report_*.md |
追踪报告摘要 |
trace 中包含自定义标记:
MonthView:Compose— 月视图重组CalendarPagerArea— 日历分页器区域CalendarPager:Page:*— 月视图单页重组CalendarMonthPage:*— 月页面数据计算(含折叠动画准备)WeekPager:Page— 周视图单页重组YearView:Compose— 年视图重组YearGridView:*— 年视图网格组合(首帧耗时关键指标)generateMiniMonthDays:*— 月份网格计算MonthView→YearView/YearView→MonthView— 视图切换YearView:SelectMonth— 年视图选月getMonthDays:*— ViewModel 月份网格计算VM:collapseProgress:*— 折叠动画拖拽(onDrag/onDragEnd/onExpandDrag/onExpandDragEnd)
Baseline Profile / Startup Profile
# 编译 Android debug APK
./gradlew :app:assembleDebug
# 安装到设备
./gradlew :app:installDebug
# 编译 release APK(含 Baseline / Startup Profiles)
./gradlew :app:assembleRelease
# 安装 benchmark 构建类型 APK
./gradlew :app:installBenchmark
一键生成并复制到 :core:
./gradlew :macrobenchmark:updateBaselineProfile
生成后会得到两份产物:
| 产物 | 目标路径 | 用途 |
|---|---|---|
| Baseline Profile | core/src/main/baseline-prof.txt |
指导 ART 做 AOT 编译 |
| Startup Profile | core/src/main/baselineProfiles/startup-prof.txt |
指导 AGP 做 DEX layout 优化 |
仅运行基准测试(不自动复制):
./gradlew :macrobenchmark:connectedBenchmarkAndroidTest
手动复制路径:
macrobenchmark/build/outputs/connected_android_test_additional_output/
注意:当前 benchmark 构建类型继承自 release(isMinifyEnabled = true),因此生成的文本 profile 会包含 R8 混淆后的类/方法名。AGP 在打包 APK/AAB 时会根据最终混淆映射将其转换为二进制 profile,这是正常行为。
模拟器
emulator -avd Pixel_10 \
-no-snapshot \
-no-boot-anim \
-gpu host \
-accel on \
-cores 4 \
-memory 4096 \
-partition-size 2048
启动带 adb logcat 的模拟器
./gradlew :app:installDebug && rm -rf logs/1.logcat && adb logcat | tee logs/1.logcat