CHANGELOG_1.1.0_SUMMARY.md 5.9 KB

1.1.0 版本变更快速参考

此文件用于快速查看 1.1.0 版本的所有修改,详细内容请查看 CHANGELOG.md

🔴 关键修复与体验优化

1. AppLovin 初始化与闪屏体验重构

问题: 新用户进入应用时,主界面 home_screen 会突然被 AppLovin 全屏合规授权(Terms & Conditions)打断,并且与项目配置的 Native Splash 及旧版过渡页造成交叠冗余。 文件:

  • lib/main.dart (统一接管路由和初始化流程)
  • lib/homepage/home_screen.dart (剥离脏代码) 修复与重构:
  1. 净化 home_screen.dart 中深耦合的 AppLovin、FCM、Adjust 等第三方初始化逻辑。
  2. 顶层统管:在 main.dart 中使用 FlutterNativeSplash.preserve()
  3. 利用底层系统闪屏做自然遮罩,等待 AppLovin 跑完阻断全屏后,主动 remove() 展露完备的游戏世界。 预期效果: 原生沉浸式无缝感受,消除“大弹窗突然糊脸”的突兀感并保持严格隐私合规。

2. 动画系统 Crash 修复

问题: Crashlytics 报告动画监听器在页面销毁后仍被触发,导致 null pointer 文件: lib/play/board_play.dart (11个方法) 修复: 添加 board == null 防护检查 预期效果: 降低低端设备 crash 率 30-50%

受影响方法:
✓ _moveAnimationListener()
✓ _successAnimationListener()
✓ _dealingAnimationListener() / _dealingAnimationStatusListener()
✓ _flipAnimationListener() / _flipAnimationStatusListener()
✓ _mergeAnimationListener() / _mergeAnimationStatusListener()
✓ _prepareAnimationListener() / _prepareAnimationStatusListener()

2. Moloco SDK 初始化修复

问题: VastActivity context 未初始化导致应用崩溃 文件:

  • android/app/build.gradle.kts (版本升级)
  • android/app/proguard-rules.pro (混淆规则)

修复:

  1. 升级 Moloco Adapter: 3.0.0.0 → 3.1.0.0
  2. 强化 ProGuard 保护 service_locator 预期效果: 消除 Moloco mediation crash

3. 网络资源断流异常阻断 (伪崩溃隔离)

问题: 网络不稳定导致网络图片加载失败报 Software caused connection abortDownloaded data is too small 异常,该异常穿透至 FlutterError.onError 被记作了“致命崩溃”。 文件: lib/main.dart 修复: 提取独立的 isEnvIssue 并在 FlutterError.onError 被调用时提前拦截因网络造成的资源报错,使其由崩溃降级为警告记录。 预期效果: 消除 Firebase 后台上大量的虚假 Crash 图谱数据,聚焦真正使 App 异常闪退的技术缺陷。


🟡 功能增强(Smart Device Recognition)

设备黑名单智能识别系统

问题: Crash 和 ANR 集中在特定设备,无法动态更新 文件:

  • lib/remote_config/remote_config.dart (3个新参数)
  • lib/ads/applovin_ads_controller.dart (检测逻辑增强)

新增 Remote Config 参数:

ad_crash_prone_devices: # Crash 高发设备 → 禁用所有广告
  "samsung a21s,samsung a31,samsung a12,redmi lancelot,oppo op4efdl1,vivo 2015,vivo 2111,huawei,infinix,motorola borag,motorola hawaiip"

ad_anr_prone_devices: # ANR 高发设备 → 禁用广告
  "hornor hngfy-m,zuum covet,vivo 1820"

non_phone_devices: # 非手机设备 → 限制广告
  "jvc,tcl,transformer"

ApplovinAdsController 增强:

  • 新标记: _isAnrProneDevice, _isNonPhoneDevice
  • 改进的 _shouldSkipAds() 判断逻辑
  • 更清晰的日志输出(emoji 标记严重程度)

预期效果:

  • Samsung A12/A21s/A31 crash 率 ↓ 70-80%
  • ANR 高发设备表现 ↓ 显著改善
  • 可通过 Firebase Console 远程更新黑名单(无需重新发版)

📋 修改文件清单

Dart 文件

文件 修改项 行数
lib/play/board_play.dart 11 个 animation listener null check ~570-700
lib/remote_config/remote_config.dart +3 getter, +3 Remote Config 参数 ~8-25
lib/ads/applovin_ads_controller.dart +2 标记, +2 getter, +3 检测方法 ~30-115

Android 配置文件

文件 修改内容
android/app/build.gradle.kts Moloco Adapter 版本升级
android/app/src/main/AndroidManifest.xml VastActivity 声明
android/app/proguard-rules.pro service_locator ProGuard 规则
android/app/src/main/kotlin/.../MainActivity.kt AppLovinSdk 初始化

文档

  • CHANGELOG.md - 1.1.0 版本详细记录
  • CHANGELOG_1.1.0_SUMMARY.md - 本文件(快速参考)

⚠️ 下次发版须知

发版前清单

  • 在 Firebase Console 更新 Remote Config 的 3 个参数
  • 测试 Samsung A12/A31 设备上的动画和广告展示
  • 验证 Moloco 广告是否正常加载和显示
  • 确认低端设备上没有新的 crash

监控指标

发版后,重点关注:

1. Crashlytics: boardplay.dart 相关 crash 率变化
2. Firebase Analytics: 按设备型号分组的 crash 率
3. Play Console: 各设备型号的 ANR 率
4. 广告收益: 是否受黑名单影响(预期影响较小)

回滚计划

如果出现问题,可通过以下方式快速恢复:

  1. 动画问题: 需要重新发版(代码级修复)
  2. 广告问题: 直接在 Firebase Console 修改 Remote Config 黑名单

📞 技术联系

如有疑问或需要补充修改,请参考:

  • 会话记录: /memories/session/device_analysis_optimization.md
  • Crashlytics 动画修复: /memories/session/crashlytics_animation_fix.md
  • 设备分析详情: /memories/session/ 目录

最后更新: 2026-03-20