Skip to content

v2.2 - 极致二进制瘦身、64位单架构与构建接缝守门

Choose a tag to compare

@Allenalonel Allenalonel released this 04 Oct 18:39
· 621 commits to main since this release

WebDavPlayer v2.2 发布说明

WebDavPlayer v2.2 迎来重大构建工程与打包接缝(Packaging Seam)革新,专注于极致二进制瘦身、64 位现代架构精简与构建质量自动化门禁。发布安装包体积从上一版本的 56.8 MB 断崖式锐减至 6.57 MB(缩减达 88%),为移动网络下载与低端设备运行带来飞跃式的轻量化体验!


🚀 核心更新与工程优化

1. 彻底根除 DEX 死代码膨胀(-40+ MB 字节码)

  • 局部化 AppIcons 资产接缝:全面剔除体积庞大的 androidx.compose.material:material-icons-extended 依赖,建立局部显式管理的 AppIcons 目录,从源头杜绝未引用的数万个矢量图标类编译入包。
  • classes.dex 结构缩减:DEX 文件数量从 3 个缩减为单一 classes.dex,未压缩字节码由 44.56 MB 降至 3.91 MB,极大地减少了系统 ART 虚拟机的类加载耗时,冷启动响应显著加快。

2. 全面开启 R8 混淆、资源缩减与精准保护

  • 深度代码混淆与资源剔除:在 Release 构建中全面启用 isMinifyEnabled = true 与 isShrinkResources = true。
  • 纵深保护规则(ProGuard Keep Rules):针对 Room 实体/DAO、Media3 Session 回调、Native JNI 桥接接口(FfmpegAudioDecoder、AsfExtractor、ExtractorInput)、OkHttp Interceptor/Authenticator 及 WebSocket 回调建立严格防御规则,确保混淆后网络流媒体回放与本地数据库零异常。

3. 专注 64 位单架构 Native 过滤(-50% Native 体积)

  • 剥离过时的 32 位 armeabi-v7a:基于项目 minSdk = 29 (Android 10) 基线,全面拥抱现役 64 位 ARMv8 架构,在 Release 打包中仅保留 arm64-v8a,剥离全部 32 位冗余 .so 文件,原生动态库体积直降 50%。

4. 优化独立分发 APK 字节码压缩

  • 显式配置 dex.useLegacyPackaging = true:针对 GitHub Releases 独立 APK 直装分发场景,强制使用 DEFLATE 算法压缩 classes.dex(压缩比达 0.49,由 4.09 MB 压缩至 1.90 MB),直接消除 AGP 默认未压缩模式带来的 2.19 MB 传输体积膨胀,为蜂窝网络下载提供极致轻量体验。

5. 发布体积预算硬性守门门禁

  • 自动化门禁闭环:在构建流中引入 verifyReleasePackaging 任务与 PackagingSeamVerificationTest 单元测试,强制约束 Release APK 硬性指标:总包体 <= 7.5 MB(实测 6.57 MB)、单一 classes.dex <= 4.0 MB、Native 动态库仅包含 arm64-v8a。

📦 安装包文件

  • WebDavPlayer-v2.2.apk (6.57 MB) - 专注 arm64-v8a 64 位架构,内置完整 FFmpeg WMA/FLAC 原生软解引擎与深层流媒体管道。