# 1.1.0 版本变更快速参考 > 此文件用于快速查看 1.1.0 版本的所有修改,详细内容请查看 [CHANGELOG.md](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 abort` 或 `Downloaded 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 参数**: ```yaml 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