Android 应用包体积优化全面指南:从代码到资源的系统性优化策略
引言
随着移动应用功能的日益复杂化,Android 应用包体积不断增长已成为一个普遍问题。过大的应用包不仅影响用户下载转化率,还会增加存储占用、延长安装时间,并可能导致低端设备运行缓慢。根据 Google 官方数据,采用最新优化技术的应用可实现高达50% 的体积缩减,而采用 Android App Bundle 格式的应用平均减少47% 的安装包体积。
本指南将从代码优化、资源管理、依赖库精简等多个维度,全面剖析 Android 应用包体积优化的技术方法和实践策略。我们将重点关注 2025 年最新的技术进展,包括 Android Gradle Plugin 8.12.0 引入的革命性资源压缩优化、新一代图像格式 AVIF 的应用,以及各种前沿的优化工具和方法。
一、代码层面优化策略
1.1 R8 混淆压缩技术的深度应用
自 Android Gradle Plugin 3.4.0 版本起,R8 已完全取代 ProGuard成为默认的代码优化工具(1)。R8 将脱糖、压缩、混淆、优化和 dex 处理整合到一个步骤中,显著提升了构建性能(90)。在 2025 年的最新版本中,R8 引入了多项革命性的优化特性。
AGP 8.12.0 的革命性资源压缩优化是当前最重要的技术突破。这一特性将代码优化与资源压缩合并处理,R8 能够同时处理代码和资源引用,智能识别那些只被无用代码引用的资源,并将它们连同对应的冗余代码一起移除(77)。根据官方数据,对于跨不同形态因素共享大量资源和代码的应用,这种新方法可实现超过 50% 的应用体积缩减。
要启用这一功能,只需在 build.gradle 中配置:
▼text复制代码android {   buildTypes {   release {   isMinifyEnabled = true   isShrinkResources = true   }   } }
在 AGP 9.0 及更高版本中,这一行为将成为默认配置,无需额外设置 android.r8.optimizedResourceShrinking=true(37)。
R8 的四大核心功能为代码优化提供了全方位支持(1):
-
代码压缩(Code Shrinking):通过静态代码分析查找和删除无法访问的代码和未实例化的类型,有效解决 64k 引用限制问题。R8 会从程序的入口点开始跟踪所有可访问的代码,然后使用摇树优化删除未使用的代码(21)。
-
资源压缩(Resource Shrinking):移除应用中未使用的资源文件,包括 res 文件夹和资源表中的无用资源。这一功能与代码压缩协同工作,当未使用的代码被删除后,所有不再被引用的资源也能被安全移除(1)。
-
代码优化(Optimization):通过各种优化技术进一步减少代码体积并提升性能。这些技术包括:
-
内联方法(Method Inlining):将小方法体直接插入调用处,减少方法调用开销,可提升运行时性能高达 30%(1)
-
常量折叠和传播(Constant Folding and Propagation):简化数学表达式,用常量值替换变量
-
不可达代码消除(Unreachable Code Elimination):移除永远不会执行的代码路径
-
类合并(Class Merging):将相似的类或接口合并为单一实体(87)
- 混淆(Obfuscation):缩短类和成员的名称,减少 DEX 文件大小。R8 使用简短、无意义的名称(如 a、b、c)替换原有的类名、方法名和字段名(1)。
R8 的高级配置选项提供了更精细的控制能力(3):
-
-repackageclasses:将所有类重新打包到一个包中,通过去除包名前缀来减小 dex 文件大小
-
-allowaccessmodification:允许 R8 修改类、字段和方法的可见性以执行更广泛的优化。从 AGP 8.2 开始,在 R8 全模式下默认启用
-
-dontoptimize:阻止代码优化(如方法内联),仅在开发期间使用
-
-dontshrink:阻止删除未使用的代码和优化
-
-dontobfuscate:阻止缩短类和方法名称,有助于调试时阅读堆栈跟踪
1.2 死代码消除与字节码优化
死代码消除的深度配置是代码优化的核心环节。R8 通过多种技术实现深度的死代码消除(87):
-
摇树优化(Tree Shaking):使用静态代码分析查找和删除无法访问的代码和未实例化的类型。这是解决 64k 引用限制的有效工具,特别适用于只使用库的部分 API 的场景(21)。
-
条件优化:当条件判断的结果可以确定时,死代码消除会移除未使用的分支,条件判断也会消失(28)。
-
智能检测:例如,当 R8 检测到某个 if/else 语句的 else 分支永远不会被执行时,会自动删除该分支代码(1)。
为了更好地理解 R8 的优化过程,以下是一个典型的优化流程图:
▼text复制代码R8优化流程: 输入Class文件 → 压缩(可达性分析) → 移除未引用类/方法   ↓   优化(字节码改写) → 方法内联、常量折叠等   ↓   混淆(名称重命名) → 生成mapping.txt   ↓ 输出混淆后的Class文件
字节码优化的最新进展令人振奋。2025 年 12 月,Android Runtime (ART) 团队实现了编译时间 18% 的提升,且不影响编译代码质量或峰值内存使用(72)。这一改进通过分阶段 rollout 实现,部分优化已在 2025 年 6 月发布,其余在年底完成,所有 Android 12 及以上版本用户都可通过 mainline 更新获得这些改进(73)。
1.3 代码精简与重构策略
代码重构的最佳实践需要遵循系统化的方法(40):
-
使用静态分析工具:如 FindBugs、Lint 等检测代码中的 "坏味道",包括过长的函数、重复代码、未使用的变量等(52)。
-
建立完善的测试覆盖:这是安全重构的前提条件。为现有代码编写单元测试,确保重构不会改变功能(44)。
-
采用小步迭代方式:每次只重构一小部分代码,确保每一步都能正常编译和运行。这种方法可以降低重构风险,及时发现问题(40)。
-
持续验证:重构完成后,运行所有测试用例,确保功能完整性。
代码复用与模块化设计是减少代码体积的关键策略(38):
-
某社交应用团队采用模块化设计后,新功能开发周期缩短 40%,代码复用率提升至 65%
-
遵循 "高内聚、低耦合" 原则,每个功能模块既保持独立演进,又通过统一接口规范实现协同工作
-
将重复的业务逻辑提取为通用方法或封装成工具类,避免代码冗余(41)
Kotlin 带来的代码精简优势显著(41):
Kotlin 提供了更简洁的语法,例如:
-
数据类(data class):自动生成 equals、hashCode、toString 等方法
-
扩展函数:无需继承即可为现有类添加功能
-
lambda 表达式:简化集合操作和回调处理
-
空安全特性:减少空指针检查代码
这些特性能够显著减少样板代码,在某些情况下可减少高达 30-40% 的代码量。
1.4 代码优化工具与技术进展
2025 年最新的代码优化工具和技术呈现出智能化、自动化的发展趋势:
- Android Studio 的 AI 辅助功能(76):
-
AI 辅助编码:基于上下文智能补全代码,减少重复劳动
-
实时预览:无需频繁运行应用即可查看界面变化
-
Gemini 功能:包括 rename(基于上下文为变量、类或方法建议合适名称)和 rethink(分析整个文件并建议新的变量和方法名称)
- 新一代 Android Quantum Compiler (AQC)(71):
-
动态二进制翻译:根据设备硬件特性实时生成最优机器码
-
跨语言联合编译:Kotlin/Java/Rust 代码统一编译为 WASM-IR 中间层,提升执行效率
- 构建速度优化:
-
R8 支持多线程处理和增量构建,大幅提升构建速度(85)
-
并行处理能力使大型项目的构建时间从 43 分钟缩短至 10 分钟以内
- 代码分析工具(54):
-
dead_code_analyzer:用于 Dart 和 Flutter 项目,识别未使用的代码元素(类、函数、变量)
-
AndroidJunkCode:专门分析 Android 项目中的垃圾代码,快速识别不再使用的代码、重复代码
-
UCDetector:Eclipse 插件,用于检测不必要的代码
-
Android Lint:静态代码分析工具,检测代码质量问题和性能问题
二、资源层面优化策略
2.1 图片资源优化技术
图片资源通常占据 APK 体积的60-80%,是包体积优化的重中之重。2025 年,图片优化技术取得了重大突破,特别是AVIF 格式的广泛应用带来了革命性的压缩效果。
新一代图像格式的优势对比:
| 格式 | 压缩率优势 | 支持透明度 | 动画支持 | 最低 Android 版本 | 浏览器支持度 |
|---|---|---|---|---|---|
| AVIF | 比 JPEG 小 40-90%,比 WebP 小 30-50% | ✓ | ✓ | 12 (API 31) | 93.44% |
| WebP | 比 JPEG/PNG 小 25-35% | ✓ | ✓ | 4.0 (API 14) | 接近 100% |
| JPEG | 基准 | ✗ | ✗ | 1.0 | 100% |
| PNG | 基准 | ✓ | ✓ | 1.0 | 100% |
AVIF 格式的技术优势极为显著(93):
-
基于 AV1 视频编码技术,压缩率远超传统格式
-
支持 8 位、10 位、12 位色彩深度,提供更丰富的色彩表现
-
支持高动态范围(HDR)成像,能够呈现更广泛的色彩范围和更细腻的亮度变化
-
同时支持无损和有损压缩模式
-
对透明度的处理更加细腻,压缩比更高
WebP 格式的成熟应用已经得到广泛验证(94):
-
静态 WebP 支持 Android 4.0+,动态 WebP 支持 Android 9.0+
-
无损压缩比 PNG 小 25-34%,有损压缩比 JPEG 小 25-34%
-
支持透明度和动画,是 GIF 动画的理想替代品
-
编码解码速度快,对设备性能要求较低
图片压缩工具的选择与使用:
- TinyPNG(109):
-
支持 WebP、PNG、JPEG 格式
-
智能有损压缩,通过减少颜色数量实现压缩
-
免费版限制:每次最多 20 张,每张最大 5MB
-
压缩效果:PNG 可压缩 50% 以上,几乎不影响视觉质量
- Google 官方工具:
-
Android Studio 内置 WebP 转换功能
-
支持批量转换,可设置压缩质量参数
- 命令行工具:
▼text复制代码\# 批量转换res/drawable目录下的PNG到WebP find . -name "\*.png" | xargs -I {} cwebp -q 80 {} -o {}.webp
分辨率适配与资源管理策略:
Android 支持为不同屏幕密度提供适配资源(103):
-
drawable-ldpi (120dpi):低密度屏幕
-
drawable-mdpi (160dpi):中密度屏幕(基准)
-
drawable-hdpi (240dpi):高密度屏幕
-
drawable-xhdpi (320dpi):超高密度屏幕
-
drawable-xxhdpi (480dpi):超超高密度屏幕
-
drawable-xxxhdpi (640dpi):超超超高密度屏幕
资源匹配优先级规则(107):
-
系统优先加载与设备 DPI 最匹配的资源目录
-
若没有对应目录,系统会尝试加载更高 DPI 的资源(向上兼容)
-
最终会使用默认的 drawable 目录资源
为了减少 APK 体积,可以采用以下策略:
-
只提供必要的密度资源(如 mdpi、xhdpi、xxhdpi)
-
使用矢量图(VectorDrawable)替代位图,避免为每个密度提供不同图片
-
对于不常用的图片,采用动态下载方式
2.2 资源文件精简与检测
无用资源的自动检测与清理是资源优化的基础工作:
- Android Studio 内置工具(118):
-
Lint 工具:通过 Analyze > Inspect Code 菜单运行,专门检测未使用的 drawable、layout、mipmap、values 资源
-
Android Resource Remover 插件:可检测并移除未使用的资源
- 第三方检测工具:
-
SDMaid(120):专业的 Android 存储清理工具,可扫描设备并过滤不需要的文件目录
-
清浊(115):支持一键清理、应用通用清理、卸载残留清理、APK 清理等功能
-
Avast Cleanup(117):智能识别并处理各类占用资源的冗余内容
-
Gradle 配置优化:
通过 resConfigs 属性指定应用支持的语言,减少不必要的本地化资源:
▼text复制代码android {   defaultConfig {   resConfigs "en", "zh-rCN" // 只包含英文和简体中文   } }
资源复用与动态加载策略:
- 矢量图(VectorDrawable)的优势(122):
-
基于 XML 定义的矢量图形,可无限缩放而不失真
-
同一文件可适配不同屏幕密度,大幅减少资源文件数量
-
文件体积小,特别适合图标等简单图形
-
Android 5.0 (API 21) 开始原生支持,低版本可通过 AppCompat 库支持
- NinePatch 图片优化:
-
用于需要拉伸的图片(如按钮背景)
-
只定义拉伸区域,避免图片变形
-
可显著减少图片资源数量
- 资源动态加载:
-
将不常用的资源(如广告图片、用户头像)改为网络加载
-
使用 AssetManager 加载 assets 目录下的压缩资源
-
实现资源的按需加载,减少初始包体积
2.3 音视频资源优化
音视频资源是应用体积的另一个重要组成部分,特别是在视频类、直播类应用中,音视频资源可能占据70% 以上的包体积。
编解码技术的最新进展:
- Android 16 的媒体播放优化(131):
-
使用 Rust 语言重写媒体编解码器,提高效率和安全性
-
减少解码视频或音频所需的进程数量
-
提升媒体播放的整体效率
- 硬编解码优化(133):
-
通过 SetSmartPlayerVideoHWDecoder 接口检测并启用 H.264/H.265 硬解码
-
根据设备支持情况自动选择硬解码或软解码
-
可降低 CPU 占用率 50% 以上,提升解码效率
- FFmpeg 优化策略(130):
-
异步解码:避免阻塞主线程
-
零拷贝传输:减少内存复制开销
-
NEON 指令加速:利用 ARM 架构的 SIMD 指令集
-
选择合适的比特率:在保证画质的前提下优化文件大小
流媒体协议的选择与优化:
| 协议 | 优势 | 劣势 | 起播时延 | 适用场景 |
|---|---|---|---|---|
| HLS | 广泛支持,成熟稳定 | 起播慢,6-9 秒 | 中 | 直播、VOD |
| DASH | 功能丰富,低延迟支持 | 服务器复杂度高 | 中 | 高质量流媒体 |
| Progressive | 简单快速 | 无自适应能力 | 快 | 简单点播 |
HLS/DASH 低延迟优化配置(136):
- 服务端配置:
-
分片时长:建议 2-6 秒,LL-HLS 使用 PART 分片可低至 0.21 秒
-
关键帧间隔(GOP):1 秒左右
-
首分片尽量小:约 1 秒的内容
- 客户端配置(Media3):
▼text复制代码val liveCfg = MediaItem.LiveConfiguration.Builder()   .setMaxPlaybackSpeed(1.02f) // 轻微追赶机制   .setTargetOffsetMs(3000) // 目标延迟3秒   .setMinOffsetMs(2000) // 延迟下限2秒   .setMaxOffsetMs(5000) // 延迟上限5秒   .build() val item = MediaItem.Builder()   .setUri(uri)   .setLiveConfiguration(liveCfg) // 直播/低延迟配置   .build()
-
ExoPlayer 网络栈优化(137):
使用 Cronet 作为网络引擎,通过 QUIC 协议和预加载等特性,能显著提升流媒体加载速度。
音视频缓存策略:
- MediaLoader 缓存方案(143):
-
支持在播放时同步缓存视频 / 音频内容
-
避免重复下载,减少数据消耗
-
可设置缓存大小和过期策略
- ExoPlayer 缓存机制(148):
-
支持将流媒体内容缓存到本地存储
-
可配置缓存路径和大小
-
支持离线播放已缓存内容
- 云端 vs 本地存储策略(145):
-
核心音频(如提示音、背景音乐):打包在 APK 中
-
大体积音频(如音乐、语音):云端存储,按需下载
-
视频内容:全部采用云端存储,本地只缓存临时文件
2.4 本地化资源优化
本地化资源往往被忽视,但对于多语言应用来说,这部分可能占据 **15-25%** 的包体积。
多语言资源的按需打包:
-
resConfigs 精确配置(150):
通过 resConfigs 属性明确指定应用支持的语言,Gradle 会自动排除不支持的语言资源:
▼text复制代码android {   defaultConfig {   // 只包含英文、简体中文和繁体中文   resConfigs "en", "zh-rCN", "zh-rTW"   } }
-
语言资源合并策略(155):
将不同地区的语言资源合并到最通用的父方言中,例如将 "zh-rCN" 和 "zh-rTW" 的共同资源放在 "zh" 目录下,只在各自目录中放置有差异的资源。
-
动态语言切换:
使用插件化或云端按需下载的方式加载语言资源,初始包只包含默认语言。
Android App Bundle 的本地化优化(162):
如果使用 Android App Bundle(Google Play 要求 2021 年 8 月后所有新应用必须使用),Google Play 会自动根据用户设备语言分发相应的资源,无需额外配置 resConfigs 也能实现语言资源的优化。
资源拆分与动态加载技术:
- 动态功能模块(Dynamic Feature)(151):
-
将非核心功能(如 AR、支付、音视频模块)设置为动态功能
-
用户按需下载,减少初始包体积
-
可节省 20-40% 的下载体积
- Split APK 技术(164):
- 按屏幕密度生成不同 APK:
▼text复制代码android {   splits {   density {   enable true   // 只生成mdpi、hdpi、xhdpi三种密度的APK   include "mdpi", "hdpi", "xhdpi"   // 排除xxxhdpi等高密度   exclude "xxxhdpi"   }   } }
- 按 CPU 架构拆分:
▼text复制代码android {   splits {   abi {   enable true   // 只包含arm64-v8a和armeabi-v7a   include "arm64-v8a", "armeabi-v7a"   // 排除x86等架构   exclude "x86", "x86\_64"   }   } }
- 插件化资源管理(170):
-
将应用功能拆分成独立插件
-
主应用只包含核心功能和资源
-
插件在运行时按需加载
-
可实现资源的动态更新和按需下载
三、依赖库优化策略
依赖库往往是 APK 体积膨胀的主要原因之一,特别是当引入大型框架或包含大量传递依赖时。根据统计,第三方依赖库可能占据 APK 体积的30-50%。
3.1 依赖分析工具的使用
专业依赖分析工具为优化提供了强大支撑:
- LibChecker(171):
-
专业的 Android 应用架构分析工具
-
能够深入了解应用的内部结构和依赖关系
-
标记第三方库组件,帮助快速识别应用中使用的知名库
-
提供全面的依赖分析报告
- Dependency Analysis Gradle Plugin (DAGP)(173):
▼text复制代码plugins {   id "com.autonomousapps.dependency-analysis" version "2.15.0" }
-
采用先进的字节码分析技术查找未使用的依赖项
-
识别应该直接声明的传递性依赖
-
检查配置是否正确(api、implementation、compileOnly 等)
-
提供构建健康评估功能
- Gradle 内置依赖分析(176):
- 使用命令行查看依赖树:
▼text复制代码./gradlew app:dependencies
- 查看 Android 特定依赖:
▼text复制代码./gradlew app:androidDependencies
- 生成详细的依赖报告:
▼text复制代码./gradlew --scan
- Android Studio 可视化工具(176):
-
通过 View > Tool Windows > Gradle 打开 Gradle 窗口
-
右键单击模块,选择 "Analyze Dependencies"
-
以图形化方式展示依赖关系
3.2 轻量级替代方案调研
主流库的体积对比与替代方案:
| 功能 | 传统库 | 体积 | 轻量级替代 | 体积 | 节省比例 | 注意事项 |
|---|---|---|---|---|---|---|
| JSON 解析 | Gson | 475KB | Moshi | 215KB | 55% | 需手动编写 JSON 适配器 |
| 网络请求 | Retrofit | 650KB | OkHttp | 280KB | 57% | 需自行处理请求 / 响应 |
| 图片加载 | Glide | 1.2MB | Picasso | 350KB | 71% | 功能相对简单 |
| DI 框架 | Dagger2 | 1.4MB | Hilt | 900KB | 36% | 需要 AndroidX 支持 |
| 数据库 | Room | 850KB | SQLiteOpenHelper | <100KB | >88% | 需手动处理 SQL |
具体替代方案详解:
- JSON 解析库对比:
-
Gson:功能全面,支持复杂对象映射,但体积较大(475KB)
-
Moshi:体积更小(215KB),性能略优,但需要手动编写 JSON 适配器
-
替代建议:如果项目中的 JSON 结构相对简单且稳定,Moshi 是更好的选择
- 网络请求库优化:
-
Retrofit + OkHttp:完整的网络请求解决方案,但体积较大(Retrofit 650KB + OkHttp 280KB = 930KB)
-
仅使用 OkHttp:如果只需要基本的网络请求功能,直接使用 OkHttp 可节省 650KB
-
优化策略:分析项目中 Retrofit 的使用场景,仅在需要 RESTful API 时使用,其他场景用 OkHttp 替代
- 图片加载库选择:
-
Glide:功能强大,支持多种格式和动画,但体积达 1.2MB
-
Picasso:体积仅 350KB,适合简单的图片加载需求
-
优化建议:根据项目需求选择,如果只需要基本的图片加载和缓存功能,Picasso 是更轻量的选择
- 数据库解决方案:
-
Room:Google 推荐的 ORM 框架,体积 850KB,提供了很多便利功能
-
原生 SQLite:直接使用 SQLiteOpenHelper,体积小于 100KB
-
选择策略:对于简单的数据库操作,原生 SQLite 可以节省 750KB 以上;对于复杂查询,Room 的便利性值得其体积开销
3.3 依赖冲突处理与版本管理
依赖冲突的识别与解决:
- 冲突类型分析(187):
-
同一库的不同版本冲突(如 androidx.core:core-ktx:1.8.0 与 1.12.0)
-
重复的类文件("Program type already present" 错误)
-
传递依赖引入的不兼容版本
- 冲突解决方法:
- Gradle 排除依赖(190):
▼text复制代码implementation('com.example.library:library:1.0.0') {   exclude group: 'com.android.support', module: 'support-v4' }
- 强制指定版本:
▼text复制代码configurations.all {   resolutionStrategy {   force 'com.android.support:support-v4:28.0.0'   } }
- 使用 Gradle --scan 分析(188):
▼text复制代码./gradlew --scan
- 版本管理最佳实践:
-
使用统一的版本管理文件(如 versions.gradle)
-
定期更新依赖库到最新稳定版本
-
避免使用 alpha/beta 版本
-
建立依赖库准入机制,评估每个新库的必要性
3.4 自研 vs 集成的决策框架
自研与集成的权衡分析:
- 适合自研的场景:
-
功能简单且项目有特殊需求
-
第三方库体积过大(>500KB)且只使用了小部分功能
-
需要高度定制化的功能
-
性能要求极高的核心功能
- 适合集成的场景:
-
功能复杂且维护成本高
-
已有成熟稳定的开源库
-
需要跨平台兼容性
-
开发时间紧张
- 决策评估模型:
| 评估维度 | 权重 | 自研得分 | 集成得分 | 加权得分 |
|---|---|---|---|---|
| 开发成本 | 30% | 8(高) | 2(低) | 自研: 2.4 集成: 0.6 |
| 维护成本 | 25% | 7(高) | 3(低) | 自研: 1.75 集成: 0.75 |
| 体积影响 | 20% | 9(低) | 3(高) | 自研: 1.8 集成: 0.6 |
| 稳定性 | 15% | 4(低) | 8(高) | 自研: 0.6 集成: 1.2 |
| 功能完整性 | 10% | 6(中等) | 9(高) | 自研: 0.6 集成: 0.9 |
| 总分 | 100% | 7.15 | 4.05 | - |
实际案例分析:
- 网络请求模块:
-
第三方库:Retrofit + OkHttp(约 930KB)
-
自研方案:基于 OkHttp 封装(约 200KB)
-
节省:730KB(78%)
-
建议:如果项目只需要基本的 GET/POST 请求,推荐自研
- 图片加载模块:
-
第三方库:Glide(1.2MB)
-
自研方案:基于 Android 原生 API + 简单缓存(约 100KB)
-
节省:1.1MB(92%)
-
建议:对于简单图片展示需求,可考虑自研
- JSON 解析模块:
-
第三方库:Gson(475KB)
-
替代方案:Moshi(215KB)
-
节省:260KB(55%)
-
建议:优先使用轻量级的 Moshi 而非自研
四、系统兼容性与性能适配
不同 Android 版本和设备性能对包体积优化策略的选择有重要影响。了解这些差异,才能制定出既有效又兼容的优化方案。
4.1 不同 Android 版本的优化策略差异
各版本的优化特性支持情况:
| Android 版本 | 发布时间 | 关键优化特性 | 影响 |
|---|---|---|---|
| 4.0 (API 14) | 2011 年 | WebP 静态图片支持 | 可开始使用 WebP 格式 |
| 4.3 (API 18) | 2013 年 | WebP 透明图片支持 | 完整的 WebP 支持 |
| 5.0 (API 21) | 2014 年 | VectorDrawable、Material Design | 矢量图支持,大幅减少图片资源 |
| 7.0 (API 24) | 2016 年 | 多窗口模式、V2 签名 | 更安全的签名方式 |
| 8.0 (API 26) | 2017 年 | 自动资源管理 | 系统自动管理应用资源 |
| 9.0 (API 28) | 2018 年 | WebP 动画支持 | 完整的 WebP 动画支持 |
| 12 (API 31) | 2021 年 | AVIF 支持、App Hint | 新一代图像格式 |
| 16 (API TBD) | 2025 年 | Rust 编解码器、媒体优化 | 更高效的编解码 |
针对不同版本的优化策略:
- Android 5.0+ (API 21+):
-
全面使用 VectorDrawable 替代位图图标
-
使用 Android 5.0 + 特有的动画和过渡效果
-
利用系统的自动资源管理功能
- Android 8.0+ (API 26+):
-
启用自动资源管理,系统会根据设备特性自动选择合适的资源
-
使用 Adaptive Icons 功能
-
利用后台限制优化应用行为
- Android 12+ (API 31+):
-
全面使用 AVIF 格式图片
-
利用 App Hint 功能优化应用启动
-
使用新的媒体编解码器提升音视频性能
- 兼容低版本的策略:
-
使用 AppCompat 库提供向后兼容
-
为不同版本提供差异化的资源
-
使用 ProGuard/R8 的兼容性模式
4.2 设备性能差异对优化的影响
设备性能直接影响优化策略的选择,特别是在使用高级特性时。
高端设备(旗舰级)的优化策略:
-
可使用更复杂的动画和过渡效果
-
支持更高分辨率的图片和视频
-
可使用 GPU 加速的渲染技术
-
推荐使用 AVIF 等高压缩率格式
中端设备(主流级)的优化策略:
-
平衡功能和性能,避免过度优化
-
使用 WebP 格式替代传统图片
-
适当降低动画复杂度
-
采用智能加载策略,只加载可见区域内容
低端设备(入门级)的优化策略:
-
禁用大部分动画效果
-
使用最低分辨率的必要图片
-
避免使用复杂的渲染技术
-
优先使用静态资源,减少动态计算
设备性能检测与适配代码示例:
▼text复制代码// 检测设备是否支持高级特性 fun isHighEndDevice(context: Context): Boolean {   val packageManager = context.packageManager   val features = packageManager.systemAvailableFeatures       // 检查是否支持OpenGL ES 3.0及以上   val hasGles3 = features.any { it.name == "android.hardware.graphics.gles3" }       // 检查内存大小(以MB为单位)   val memoryInfo = ActivityManager.MemoryInfo()   val activityManager = context.getSystemService(Context.ACTIVITY\_SERVICE) as ActivityManager   activityManager.getMemoryInfo(memoryInfo)   val totalMem = memoryInfo.totalMem / 1024 / 1024       return hasGles3 && totalMem >= 3072 // 3GB及以上内存 } // 根据设备性能选择图片质量 fun getImageQuality(deviceLevel: String): Int {   return when (deviceLevel) {   "high\_end" -> 80 // 高质量   "medium" -> 60 // 中等质量   else -> 40 // 低质量   } }
4.3 应用瘦身技术的系统支持
Android App Bundle 的系统支持:
Android App Bundle 是 Google 推荐的应用分发格式,它提供了多项系统级的优化支持:
- 资源精准分发:
-
Google Play 自动根据设备特性(语言、屏幕密度、CPU 架构)生成定制化 APK
-
平均减少 47% 的下载体积
-
支持按模块分发,用户只下载需要的功能
- 动态功能模块:
-
非核心功能可以按需下载
-
支持条件分发(如仅高端设备下载 AR 功能)
-
支持即时应用(Instant Apps)
- Asset Delivery:
-
专门用于游戏资源的分发
-
支持纹理包、音频包等的按需加载
-
提供下载进度监控和断点续传
Split APK 的系统支持:
虽然 Android App Bundle 是推荐方案,但 Split APK 在某些场景下仍有用武之地(164):
- 按屏幕密度拆分:
▼text复制代码android {   splits {   density {   enable true   // 生成不同密度的APK   include "mdpi", "hdpi", "xhdpi", "xxhdpi"   // 每个APK只包含对应密度的资源   }   } }
- 按 CPU 架构拆分:
▼text复制代码android {   splits {   abi {   enable true   include "arm64-v8a", "armeabi-v7a"   exclude "x86", "x86\_64"   }   } }
- 按语言拆分(仅 Instant Apps 支持):
▼text复制代码android {   splits {   language {   enable true   include "en", "zh"   }   } }
BuildConfig 的条件编译支持:
利用 BuildConfig 进行条件编译,可以在不同版本中包含不同的代码和资源:
▼text复制代码android {   buildTypes {   release {   buildConfigField "boolean", "ENABLE\_ADVANCED\_FEATURES", "false"   }   premium {   buildConfigField "boolean", "ENABLE\_ADVANCED\_FEATURES", "true"   }   } }
在代码中使用:
▼text复制代码if (BuildConfig.ENABLE\_ADVANCED\_FEATURES) {   // 包含高级功能的代码 } else {   // 基础功能代码 }
4.4 兼容性测试与验证
确保优化后的应用在不同设备和系统版本上正常运行至关重要。
兼容性测试策略:
- 模拟器测试矩阵:
-
覆盖 API 19 到最新版本
-
包含不同屏幕尺寸和密度
-
包含不同 CPU 架构(arm、x86)
-
测试低端、中端、高端设备配置
- 真实设备测试:
-
至少包含 5-10 台不同品牌和型号的设备
-
覆盖主要厂商(三星、小米、OPPO、vivo 等)
-
包含不同 Android 版本
- 自动化测试:
-
使用 Espresso 进行 UI 测试
-
使用 JUnit 进行单元测试
-
使用 Robolectric 进行 Android 环境模拟测试
- 内存和性能监控:
-
使用 Android Profiler 监控内存使用
-
使用 Systrace 分析性能瓶颈
-
使用 StrictMode 检测性能问题
常见兼容性问题及解决方案:
- 资源找不到问题:
-
原因:不同版本的资源 ID 可能不同
-
解决方案:使用 ContextCompat.getColor () 等兼容方法
- 方法找不到异常:
-
原因:使用了高版本 API 但未做版本检查
-
解决方案:使用 Build.VERSION.SDK_INT 进行版本判断
- 图片显示异常:
-
原因:低版本不支持新的图片格式
-
解决方案:为不同版本提供不同格式的图片
- 动画效果异常:
-
原因:某些动画 API 在低版本中不存在
-
解决方案:使用兼容库或提供降级方案
五、综合评估与实施策略
5.1 包体积监控体系建设
建立完善的包体积监控体系是持续优化的基础。
监控工具的选择与使用:
- Android Studio 内置工具:
-
APK Analyzer:通过 Build > Analyze APK 打开,提供详细的包内容分析
-
Profiler:实时监控应用内存和 CPU 使用
-
Lint:检测代码和资源问题
- Gradle 插件监控:
▼text复制代码// 在build.gradle中添加体积监控 task printApkSize(type: Exec) {   commandLine 'du', '-sh', 'app/build/outputs/apk/release/app-release.apk' }
- 第三方监控工具:
▼text复制代码\# 使用Bundletool分析AAB包体积 bundletool get-size total --bundle=app-release.aab --dimensions="ABI,SCREEN\_DENSITY,LOCALE"
-
apkanalyzer:Google 官方的 APK 分析工具
-
Bundletool:用于分析 Android App Bundle 的工具
监控指标体系:
| 指标类别 | 具体指标 | 监控频率 | 目标值 |
|---|---|---|---|
| 总体积 | APK/AAB 大小 | 每次构建 | <50MB(国内)<100MB(海外) |
| 代码体积 | DEX 大小 | 每次构建 | <30MB |
| 资源体积 | 图片、音频、视频 | 每次构建 | <20MB |
| 依赖体积 | 第三方库总和 | 每周 | <15MB |
| 增量监控 | 版本间变化 | 每次发布 | <5% 增长 |
自动化监控流程:
- CI/CD 集成:
-
在 Jenkins 或 GitHub Actions 中集成包体积检查
-
设置体积增长阈值,超过时报警
-
生成体积变化趋势报告
- 定期审计:
-
每周生成依赖库使用报告
-
每月进行一次全面的体积分析
-
每季度评估优化效果
5.2 分阶段优化实施计划
制定合理的优化计划,逐步实施各项措施。
第一阶段:基础优化(1-2 周)
重点任务:
-
启用 R8 压缩和混淆
-
配置 resConfigs 减少语言资源
-
使用 VectorDrawable 替代简单图标
-
删除明显的无用资源
预期效果:减少 15-25% 的包体积
实施步骤:
-
在 build.gradle 中启用 R8 和资源压缩
-
使用 Lint 扫描并清理无用资源
-
手动检查并删除未使用的代码和资源
-
转换所有简单图标为 VectorDrawable
第二阶段:深度优化(3-4 周)
重点任务:
-
分析依赖树,移除冗余依赖
-
转换图片格式(WebP/AVIF)
-
优化音视频资源
-
实现动态功能模块
预期效果:再减少 20-30% 的包体积
实施步骤:
-
使用依赖分析工具识别冗余库
-
批量转换图片资源格式
-
将大体积音视频改为网络加载
-
将非核心功能模块化
第三阶段:极致优化(5-6 周)
重点任务:
-
自研轻量级替代方案
-
实施高级资源拆分
-
优化本地存储策略
-
全面测试兼容性
预期效果:再减少 10-15% 的包体积
实施步骤:
-
评估并替换体积过大的第三方库
-
实现 Android App Bundle 或 Split APK
-
优化数据库和文件存储
-
进行全面的兼容性测试
优化效果跟踪表:
| 优化措施 | 实施前体积 | 实施后体积 | 减少量 | 减少比例 |
|---|---|---|---|---|
| 基础优化 | 100MB | 75-85MB | 15-25MB | 15-25% |
| 深度优化 | 75-85MB | 50-65MB | 25-30MB | 20-30% |
| 极致优化 | 50-65MB | 40-55MB | 10-15MB | 10-15% |
| 总计 | 100MB | 40-55MB | 45-60MB | 45-60% |
5.3 效果评估与风险控制
科学评估优化效果,并做好风险控制。
效果评估方法:
- 定量评估指标:
-
包体积减少比例
-
下载转化率提升
-
安装成功率变化
-
启动时间变化
-
内存使用量变化
- 定性评估指标:
-
用户满意度调查
-
应用评分变化
-
卸载率变化
-
功能完整性验证
- A/B 测试方法:
-
将优化后的版本与原版本进行对比测试
-
选择部分用户群体进行试点
-
收集各项性能指标和用户反馈
风险控制策略:
- 功能风险控制:
-
建立完善的单元测试和集成测试
-
使用版本控制系统,便于回滚
-
分阶段发布,逐步扩大影响范围
- 性能风险控制:
-
监控应用崩溃率变化
-
跟踪内存泄漏问题
-
测试不同设备上的性能表现
- 兼容性风险控制:
-
覆盖所有目标 Android 版本测试
-
测试主流设备品牌和型号
-
准备降级方案
- 回滚机制:
-
保留上一版本的完整代码和资源
-
建立快速发布通道
-
制定详细的回滚流程
常见问题及应对方案:
- 优化后功能异常:
-
原因:混淆导致反射或序列化问题
-
解决方案:添加 keep 规则,保护关键类和方法
- 图片显示异常:
-
原因:格式转换或压缩导致
-
解决方案:使用质量更高的压缩参数,或提供备用图片
- 性能下降:
-
原因:过度优化导致计算量增加
-
解决方案:重新评估优化策略,在体积和性能间找到平衡
- 包体积反弹:
-
原因:新增功能或依赖
-
解决方案:建立体积预算制度,新增功能必须有相应的优化补偿
结语
通过本指南的全面分析,我们可以看到 Android 应用包体积优化是一个系统性工程,涉及代码、资源、依赖库等多个层面。通过采用最新的技术和工具,如 AGP 8.12.0 的革命性资源压缩优化、AVIF 图像格式、R8 深度优化等,现代 Android 应用完全可以实现 45-60% 的体积缩减。
关键成功因素包括:
-
技术选择:紧跟最新技术发展,选择合适的优化方案
-
系统化实施:制定分阶段计划,逐步推进各项优化措施
-
持续监控:建立完善的监控体系,及时发现和解决问题
-
兼容性保障:确保优化不影响功能和用户体验
特别值得强调的是,2025 年的技术进展为我们提供了前所未有的优化空间。从 AI 辅助编码到新一代编译器,从革命性的资源压缩到高效的编解码技术,这些创新正在重塑 Android 应用的开发和优化方式。
建议开发者在实施优化时,始终以用户体验为中心,在包体积、性能和功能之间找到最佳平衡点。通过科学的方法和持续的努力,相信每一个 Android 应用都能在保持强大功能的同时,拥有轻盈的身材,为用户带来更好的使用体验。
参考资料
[1] Réduire,
obscurcir et optimiser votre application https://developer.android.com/build/shrink-code?hl=fr&ref=content.kayssel.com
[2] R8 FAQ https://r8.googlesource.com/r8/+/refs/heads/8.1/compatibility-faq.md
[3] Добавить глобальные параметры https://developer.android.com/topic/performance/app-optimization/global-options?hl=ru
[4] D8 dexer and R8 shrinker https://r8.googlesource.com/r8/+/master/README.md
[5] Proguard / R8 configuration #1198 https://github.com/callstack/repack/issues/1198
[6] Optimizing Java Code https://chromium.googlesource.com/experimental/chromium/src/+/refs/tags/81.0.4026.1/build/android/docs/java_optimization.md
[7] Enable app optimization https://developer.android.com/topic/performance/app-optimization/enable-app-optimization
[8] アプリの圧縮、難読化、最適化 https://developer.android.com/build/shrink-code?hl=ja&ref=content.kayssel.com
[9] 代码混淆进阶革命:从ProGuard到R8,Doujin-moe-Android反编译防护的6大增强策略与压缩收益 - CSDN文库 https://wenku.csdn.net/column/75uzw2ce6c
[10] Google Brings Optimized Resource Shrinking in Latest Android Gradle Plugin https://www.infoq.com/news/2025/09/android-optimized-R8/
[11] Android 代码混淆 R8与Proguard_r8混淆-CSDN博客 https://blog.csdn.net/fitaotao/article/details/115083963
[12] 新Android插件上线,应用体积可减半,开发者必看!_搜狐网 https://m.sohu.com/a/938604042_122004016/
[13] 深入理解R8混淆:保护、瘦身与优化Android应用Android混淆就像 **“给代码戴上面具”** —— 把类名、方 - 掘金 https://juejin.cn/post/7473083144171700262
[14] Kotlin代码混淆与压缩技巧详解在 Android 开发中,ProGuard 和 R8 是用于代码压缩(Shrinki - 掘金 https://juejin.cn/post/7502457440441925683
[15] 新版 Android 插件登场,应用能瘦身 50%,Google 把代码优化和资源压缩合二为一_InfoQ http://m.toutiao.com/group/7553962015706972706/?upstream_biz=doubao
[16] R8 Optimization: The Modern Android Code Shrinker https://peerlist.io/hpnightowl/articles/r8-optimization-the-modern-android-code-shrinker
[17] Shrink, obfuscate,
and optimize your app https://developer.android.com/build/shrink-code?authuser=7
[18] Menyusutkan, meng-obfuscate, dan mengoptimalkan aplikasi Anda https://developer.android.com/build/shrink-code?hl=id&source=post_page-----692a3e72765d---------------------------------------
[19] R8 - The Next Evolution of Obfuscation for Enhanced Android Security https://moldstud.com/articles/p-r8-the-next-evolution-of-obfuscation-for-enhanced-android-security
[20] Android R8-CSDN博客 https://blog.csdn.net/steve_xiaohai/article/details/131849139
[21] Android官方推荐,使用R8来压缩您的应用-CSDN博客 https://blog.csdn.net/c10WTiybQ1Ye3/article/details/115682781
[22] AndroidStudio-apk瘦身-CSDN博客 https://blog.csdn.net/mcsbary/article/details/107359402
[23] Shrink, obfuscate,
and optimize your app https://developer.android.com/build/shrink-code?authuser=7
[24] R8 Optimization: The Modern Android Code Shrinker https://peerlist.io/hpnightowl/articles/r8-optimization-the-modern-android-code-shrinker
[25] pr0gramm-app/app/proguard-rules-base.pro at master · pr0gramm-com/pr0gramm-app · GitHub https://github.com/pr0gramm-com/pr0gramm-app/blob/master/app/proguard-rules-base.pro
[26] Optimierungen schrittweise einführen https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally?authuser=0000&hl=de
[27] Android 缩减、混淆处理和优化应用_android.enabler8.fullmode-CSDN博客 https://blog.csdn.net/qijingwang/article/details/134751787
[28] R8 Optimization: Value Assumption https://jakewharton.com/r8-optimization-value-assumption/
[29] 奥迪R8 -懂车帝 https://www.dongchedi.com/auto/series/91
[30] 启用应用程式最佳化功能 | App quality | Android Developers https://developer.android.com/topic/performance/app-optimization/enable-app-optimization?hl=zh-tw&ref=content.kayssel.com
[31] アプリの圧縮、難読化、最適化 https://developer.android.com/build/shrink-code?hl=ja&source=post_page-----692a3e72765d---------------------------------------
[32] D8 dexer and R8 shrinker https://android.googlesource.com/platform/external/r8/+/master/README.md
[33] Внедряйте оптимизацию постепенно https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally?authuser=9&hl=ru
[34] Menerapkan pengoptimalan secara bertahap https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally?authuser=4&hl=id
[35] 逐步采用优化措施 | App quality | Android Developers https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally?authuser=09&hl=zh-cn
[36] Optimize Tree Shaking Configuration for Better Bundle Size #600 https://github.com/bdougie/contributor.info/issues/600
[37] Ativar a otimização do app https://developer.android.com/topic/performance/app-optimization/enable-app-optimization?authuser=3&hl=pt
[38] Android技术架构演进与未来_mob64ca140ac564的技术博客_51CTO博客 https://blog.51cto.com/u_16213660/14316059
[39] Kotlin重构Android项目实践以下是使用 Kotlin 重构 Android 项目的 5 个常见场景实践,通过对 - 掘金 https://juejin.cn/post/7500405809429430284
[40] Android Guidelines 中的代码重构技巧:在不破坏功能的前提下改进代码质量-CSDN博客 https://blog.csdn.net/gitblog_00551/article/details/154564085
[41] android studio代码精简 - CSDN文库 https://wenku.csdn.net/answer/10jz8y629q
[42] App verkleinern,
verschleiern und optimieren https://developer.android.com/build/shrink-code?hl=de&ref=content.kayssel.com
[43] 앱 축소, 난독화 및 최적화 https://developer.android.com/build/shrink-code?hl=ko&ref=content.kayssel.com
[44] Kotin代码优化与重构实践源码级分析(65)_51CTO博客_代码优化技术 https://blog.51cto.com/u_12472724/14136468
[45] 缩减应用大小 | Build for Billions | Android Developers https://dev.android.com/guide/topics/androidgo/optimize-size?hl=zh-cn
[46] Mengurangi ukuran aplikasi Anda https://developer.android.com/topic/performance/reduce-apk-size?hl=id&trk=article-ssr-frontend-pulse_little-text-block
[47] Reduzir, ofuscar e otimizar o app https://developer.android.com/build/shrink-code?hl=pt-br&ref=content.kayssel.com
[48] Reduce your app size https://developer.android.google.cn/topic/performance/reduce-apk-size.html
[49] Reduza o tamanho do seu app https://developer.android.com/topic/performance/reduce-apk-size?hl=pt
[50] Reduce the size of your instant app https://developer.android.com/topic/google-play-instant/guides/reduce-module-size
[51] Shrink, obfuscate, and optimize your app https://developer.android.com/build/shrink-code?authuser=3
[52] Android Studio中FindBugs插件的使用与代码质量提升_51CTO学堂_专业的IT技能学习平台 https://edu.51cto.com/article/note/39630.html
[53] Improve your code with lint checks https://developer.android.com/studio/write/lint?authuser=9
[54] dead_code_analyzer 1.1.7 https://pub.dev/packages/dead_code_analyzer/versions/1.1.7
[55] AndroidJunkCode 怎么使用的_mob64ca12d3dbd9的技术博客_51CTO博客 https://blog.51cto.com/u_16213314/12276334
[56] Android Studio 工具:Lint 代码扫描工具(含自定义lint)_redundant call to 'format()-CSDN博客 https://blog.csdn.net/jinpeng9001/article/details/82761360
[57] 删除Android工程中无用代码和资源_android 工程多余代码文件及资源清理-CSDN博客 https://blog.csdn.net/tanmy0527/article/details/46009171
[58] Android lint是在ADT16提供的新工具,它是一个 - 野生鲫鱼 - 沸点 - 掘金 - 中文技术社区 https://juejin.cn/pin/7055492576178077727
[59] Android Gradle प्लग इन के DSL/API को माइग्रेट करने की टाइमलाइन https://developer.android.com/build/releases/gradle-plugin-roadmap?%3Bauthuser=5&authuser=5&hl=hi
[60] المخطط الزمني لنقل بيانات مكوّنات Android Gradle Plugin أو واجهة برمجة التطبيقات: https://developer.android.com/build/releases/gradle-plugin-roadmap?hl=ar
[61] Android Gradle 插件预览版版本说明 | Android Studio | Android Developers https://developer.android.com/build/releases/agp-preview?authuser=7&hl=zh-cn
[62] לוח הזמנים להעברת ה-DSL/API של פלאגין Android Gradle https://developer.android.com/build/releases/gradle-plugin-roadmap?authuser=9&hl=he
[63] Android Gradle Eklentisi DSL/API taşıma zaman çizelgesi https://developer.android.com/build/releases/gradle-plugin-roadmap?authuser=0000&hl=tr
[64] Plug-in Android Gradle 8.
12. 0 (juillet 2025) https://developer.android.com/build/releases/past-releases/agp-8-12-0-release-notes?hl=fr
[65] Плагин Android Gradle 8. 12. 0 (июль 2025 г.) https://developer.android.com/build/releases/past-releases/agp-8-12-0-release-notes?hl=ru
[66] Enable app optimization | App quality | Android Developers https://developer.android.com/build/enable-app-optimization
[67] 新版 Android 插件登场,应用能瘦身 50%,Google 把代码优化和资源压缩合二为一_InfoQ http://m.toutiao.com/group/7553962015706972706/?upstream_biz=doubao
[68] Google Brings Optimized Resource Shrinking in Latest Android Gradle Plugin https://www.infoq.com/news/2025/09/android-optimized-R8/
[69] R8 Optimization: The Modern Android Code Shrinker https://peerlist.io/hpnightowl/articles/r8-optimization-the-modern-android-code-shrinker
[70] 新版 Android 插件登场,应用能瘦身 50%,Google 把代码优化和资源压缩合二为一_InfoQ http://m.toutiao.com/group/7553962015706972706/?upstream_biz=doubao
[71] Android 2025年性能优化:技术趋势与实战策略_perfgpt-CSDN博客 https://blog.csdn.net/qq_35905005/article/details/145770592
[72] 18% Faster Compiles, 0% Compromises https://android-developers.googleblog.com/2025/12/18-faster-compiles-0-compromises.html?m=1
[73] Android 宣布 Runtime 编译速度史诗级提升:在编译时间上优化了 18%_ultra255编译android12需要多长时间-CSDN博客 https://carguo.blog.csdn.net/article/details/155972979
[74] 新Android插件上线,应用体积可减半,开发者必看!_搜狐网 https://m.sohu.com/a/938604042_122004016/
[75] Enable app optimization | App quality | Android Developers https://developer.android.com/build/enable-app-optimization
[76] 智创飞跃:Android技术革新下的开发新篇章-易源AI资讯 | 万维易源 https://www.showapi.com/news/article/68a2c47e4ddd79d135002f64
[77] Google Brings Optimized Resource Shrinking in Latest Android Gradle Plugin https://www.infoq.com/news/2025/09/android-optimized-R8/
[78] Android Studio Gets Smarter, Faster, and More Cross-Platform at Google I/O 2025 https://mspoweruser.com/android-studio-gets-smarter-faster-and-more-cross-platform-at-google-i-o-2025/
[79] How to Generate Production-ready Code in a Week Instead of a Month https://www.dhiwise.com/post/production-ready-android-app-code-in-week
[80] تحسين ألعاب Android https://developer.android.com/games/optimize/overview?authuser=8&hl=ar
[81] Shrink, obfuscate,
and optimize your app https://developer.android.com/build/shrink-code?authuser=09
[82] Several new Gemini features available in latest Android Studio release https://sdtimes.com/mobile/several-new-gemini-features-available-in-latest-android-studio-release/
[83] Ativar a otimização do app https://developer.android.com/topic/performance/app-optimization/enable-app-optimization?hl=pt-br&skip_cache=true
[84] Android高手笔记-D8, R8编译优化_android.enabler8=false-CSDN博客 https://blog.csdn.net/o118abcdef/article/details/122480050
[85] 代码混淆进阶革命:从ProGuard到R8,Doujin-moe-Android反编译防护的6大增强策略与压缩收益 - CSDN文库 https://wenku.csdn.net/column/75uzw2ce6c
[86] ReaSoft Development Announces reaConverter 8 Release Candidate Now Available for Final Testing https://www.reasoft.com/about/press/reaconverter/may_07_2025.html
[87] R8 Optimization: The Modern Android Code Shrinker https://peerlist.io/hpnightowl/articles/r8-optimization-the-modern-android-code-shrinker
[88] R8DIUM Changelog https://github.com/sjstein/R8DIUM/blob/master/changelog.md
[89] 【Android 构建优化】R8 : 混淆,压缩与优化引言 你是否也到过自己的Android项目,在debug时项目是正 - 掘金 https://juejin.cn/post/7549314246204473354
[90] Android 代码混淆 R8与Proguard_r8混淆-CSDN博客 https://blog.csdn.net/fitaotao/article/details/115083963
[91] 支持的媒体格式 | Android 媒体 | Android 开发者 https://android-docs.cn/media/platform/supported-formats
[92] การลดขนาดการดาวน์โหลดภาพ https://developer.android.com/develop/ui/views/graphics/reduce-image-sizes?authuser=1&hl=th
[93] 图像优化革命:AVIF 格式与 WebP 的终极对决_avif vs webp-CSDN博客 https://blog.csdn.net/2503_92849275/article/details/149858365
[94] Criar imagens WebP https://developer.android.google.cn/studio/write/convert-webp?hl=pt
[95] 数据万象 通过 Android 和 iOS 快速接入 AVIF https://cloud.tencent.com/document/practice/460/90095
[96] 性能优化——Android图片压缩与优化的几种方式_android jpg或png。对图片进行优化,一般是转换成svg,或者webp-CSDN博客 https://blog.csdn.net/u013928412/article/details/80358597
[97] 安卓图片性能优化技巧针对图片加载场景的进阶内存优化技巧,需结合图像格式选择、解码策略、内存复用机制、缓存架构及系统协作等 - 掘金 https://juejin.cn/post/7540473266680381449
[98] Android Bitmap高效优化指南:从内存管理原理到现代压缩策略Bitmap优化就像“为照片科学瘦身”,核心是区分 - 掘金 https://juejin.cn/post/7471168278888218633
[99] Android中图片压缩的三种实现方法_Android_脚本之家 https://www.jb51.net/program/336601061.htm
[100] APK瘦身的方法-CSDN博客 https://blog.csdn.net/u014686606/article/details/154749136
[101] android 图片压缩 鲁班 PSNR_mob64ca12d06991的技术博客_51CTO博客 https://blog.51cto.com/u_16213300/13664634
[102] android apk内置图片压缩的好处_mob649e816ab022的技术博客_51CTO博客 https://blog.51cto.com/u_16175525/13733097
[103] android中的图片如何适应不同分辨率的手机_mob649e815e6170的技术博客_51CTO博客 https://blog.51cto.com/u_16175475/13416051
[104] android如何匹配不通分辨率的资源_mob64ca12d9081f的技术博客_51CTO博客 https://blog.51cto.com/u_16213335/13414004
[105] 画像のパフォーマンスの最適化 https://developer.android.com/develop/ui/compose/graphics/images/optimization?hl=ja
[106] Android高分辨率图片资源处理 - CSDN文库 https://wenku.csdn.net/doc/1se17gxzi6
[107] 【图片选择与兼容性难题破解】:Android头像适配避坑指南 - CSDN文库 https://wenku.csdn.net/column/2sgd5yvg8s
[108] 告别手动放图片的噩梦!用AI 30秒搞定Android多分辨率适配Android drawable多分辨率资源处理耗时费 - 掘金 https://juejin.cn/post/7522098508788678671
[109] 8款必试的高效便捷图片压缩工具 https://a1.art/zh/blog/best-image-compressor.html
[110] 2025 年 7 款最佳免费图像压缩工具 | Small.im https://small.im/zh-hans/blog/best-image-compression-tools-2025
[111] PNG图片压缩对比分析_tinypng 压缩算法-CSDN博客 https://blog.csdn.net/u014120638/article/details/53994231
[112] APK瘦身的方法-CSDN博客 https://blog.csdn.net/u014686606/article/details/154749136
[113] TinyPNG – Compress WebP, PNG and JPEG images intelligently https://tinypng.com/index.html
[114] 2025年14款最佳图片压缩软体【照片档案缩小工具推荐】 https://www.movavi.com/zh/learning-portal/best-image-compression-tools.html
[115] 磁盘清理工具-应用宝官网 https://sj.qq.com/topic/200074643
[116] 内存检测工具-应用宝官网 https://sj.qq.com/topic/200074497
[117] Avast Cleanup(手机清理)下载-Avast Cleanup新版本25.01.0-ROM之家下载 https://m.romzhijia.net/app/AvastCleanupsjql_364236.html
[118] android studio有什么插件能够查找多余资源像图片或者xml或者strings字符串 - CSDN文库 https://wenku.csdn.net/answer/6viahxr6qz
[119] 超速清理-小米应用商店 https://app.mi.com/details?id=com.hzkli.csqli
[120] SDMaid官方版下载-SDMaid手机清理工具免费下载 v5.6.3安卓版-当快软件园手机版 https://www.downkuai.com/android/123281.html
[121] 深度清理手机内存软件推荐 手机卡顿必看的高效清理工具_豌豆荚 https://m.wandoujia.com/strategy/6133708429376346739.html
[122] Ringkasan yang dapat digambar vektor https://developer.android.com/develop/ui/views/graphics/vector-drawable-resources?hl=ID
[123] Android矢量图形实现与动画技巧演示-CSDN博客 https://blog.csdn.net/weixin_36059856/article/details/149249437
[124] Android之Apk优化九道工序_resguardrelease-CSDN博客 https://blog.csdn.net/qq_36347817/article/details/96108199
[125] 🎨 Android View背景选择:Shape、PNG与SVG的奥秘为了让您快速了解 Shape Drawable、 - 掘金 https://juejin.cn/post/7546051261582950442
[126] android svg 渲染慢_mob649e815574e6的技术博客_51CTO博客 https://blog.51cto.com/u_16175438/12825132
[127] ภาพรวมเวกเตอร์ที่ถอนออกได้ https://developer.android.com/develop/ui/views/graphics/vector-drawable-resources?authuser=0000&hl=th
[128] android APK瘦身大法——SVG图片瘦身_svg 瘦身-CSDN博客 https://blog.csdn.net/sw950729/article/details/61920576
[129] Low-latency decoding in Media
Codec https://source.android.com/docs/core/media/low-latency-media
[130] 【性能优化】ffmpeg在android上的软编解码效率瓶颈分析与调优 https://wenku.csdn.net/column/2vijasy002
[131] Android 16 将使媒体播放更加流畅 - 实时互动网 https://www.nxrte.com/jishu/57259.html
[132] Android硬编解码器选择对编码速度有何影响?_编程语言-CSDN问答 https://ask.csdn.net/questions/8887153
[133] 基于大牛直播SDK的Android平台低延迟RTSP|RTMP播放与录像技术实践技术背景 随着直播、安防监控、远程会议 - 掘金 https://juejin.cn/post/7472956559176007690
[134] android ffmpeg 面试_mob64ca12edad02的技术博客_51CTO博客 https://blog.51cto.com/u_16213420/13738412
[135] AndroidX Media 1.8.0-alpha01 版本技术解析 - GitCode博客 https://blog.gitcode.com/0752a97cadbdcc2accd81ee00ec50793.html
[136] HlsMediaSource、DashMediaSource、 ProgressiveMediaSource差异详解 - 掘金 https://juejin.cn/post/7545700885981446184
[137] 7步打造流畅播放体验:ExoPlayer网络栈深度优化指南-CSDN博客 https://blog.csdn.net/gitblog_01019/article/details/151330193
[138] 列表中item是视频,怎么优化它的打开速度0. 结论概览(按收益排序) 预加载下一条/上一条(先 prepare() 后 - 掘金 https://juejin.cn/post/7548835244298240010
[139] HLS https://developer.android.com/media/media3/exoplayer/hls?authuser=0&hl=he
[140] 在Flutter中实现视频流媒体播放时,如何有效降低首帧加载时间? http://bbs.itying.com/topic/685382054715aa0088480a99
[141] Android PlayerView视频定帧_mob6454cc743894的技术博客_51CTO博客 https://blog.51cto.com/u_16099298/13195016
[142] 10 Proven Ways to Optimize Android Apps for Smooth Video Streaming in 2025 https://www.forasoft.com/blog/article/optimize-android-apps-video-streaming
[143] Android MediaLoader单行代码实现缓存视频/音频播放 - CSDN文库 https://wenku.csdn.net/doc/3a27ct85fx
[144] 9.2 MediaPlayer播放音频与视频 | 菜鸟教程 https://www.runoob.com/w3cnote/android-tutorial-mediaplayer.html
[145] Android音乐播放器数据管理革新:实现云端同步与本地存储的完美结合 - CSDN文库 https://wenku.csdn.net/column/3qohtuuosj
[146] MediaLoader Cache video/audio while playing for any android me @codeKK Android开源站 https://p.codekk.com/detail/Android/yangwencan2002/MediaLoader
[147] Android多媒体在线播放与图片预览下载功能实现 - CSDN文库 https://wenku.csdn.net/doc/16m39vswoh
[148] android exoplayer 播放缓存和播放已下载文件_mob64ca12ed7b35的技术博客_51CTO博客 https://blog.51cto.com/u_16213419/12610747
[149] android exoplayer更好用的_mob6454cc690811的技术博客_51CTO博客 https://blog.51cto.com/u_16099218/12337955
[150] 言語と地域の解決の概要 https://developer.android.com/guide/topics/resources/multilingual-support?authuser=1&hl=ja
[151] 使用 Android App Bundle 极致压缩应用体积> 本文将通过原理剖析 + 完整代码 + 实战优化,带你彻底 - 掘金 https://juejin.cn/post/7523041906269700111
[152] Builder打包apk本地化 - CSDN文库 https://wenku.csdn.net/answer/6q18esfqx3
[153] 动态功能模块与Release构建:Google Play拆分交付实战(节省30%安装体积的核心秘诀) - CSDN文库 https://wenku.csdn.net/column/80tde83os9
[154] Поддержка разных языков и культур https://developer.android.com/training/basics/supporting-devices/languages.html?authuser=0&hl=ru
[155] Language and locale resolution overview https://developer.android.com/guide/topics/resources/multilingual-support?authuser=4
[156] Descripción general del idioma y la configuración regional https://developer.android.com/guide/topics/resources/multilingual-support?authuser=9&hl=es
[157] Android 包体积优化实践——入门级攻略通过系统化的优化策略,可显著降低包体积,提升用户下载意愿与应用性能。优化过程 - 掘金 https://juejin.cn/post/7483449728393363468
[158] Android性能优化之包体积优化一、包体积组成与瓶颈分析 1. 典型 APK 结构占比 2. 核心瓶颈来源 资源冗余: - 掘金 https://juejin.cn/post/7528257655611244544
[159] 利用Loquacious库实现Android动态资源加载以减小APK大小 - CSDN文库 https://wenku.csdn.net/doc/79xqsf7g40
[160] 【APK资源优化技巧】:精简高效,提升应用加载速度 - CSDN文库 https://wenku.csdn.net/column/2g2m6h7j4k
[161] android 打包变 lib大了_mob64ca12d5604e的技术博客_51CTO博客 https://blog.51cto.com/u_16213320/12961221
[162] This One Build Setting Shrunk My APK by 40% — And I Almost Missed It 🤯 https://www.droidcon.com/2025/08/12/this-one-build-setting-shrunk-my-apk-by-40-and-i-almost-missed-it-%F0%9F%A4%AF/
[163] Android 性能优化(四)优化Apk体积为什么需要做 Android 包体积优化 提高下载转化率,同类型的 App - 掘金 https://juejin.cn/post/7477875236136386598
[164] Cómo crear varios APK https://developer.android.com/build/configure-apk-splits?authuser=1&hl=es
[165] Creare più APK https://developer.android.com/build/configure-apk-splits?hl=it
[166] Membuat beberapa APK https://developer.android.com/build/configure-apk-splits?authuser=9&hl=id
[167] Isolated Splits https://chromium.googlesource.com/ios-chromium-mirror/+/6d244f9bdc6568082333f39110454665de714638/docs/android_isolated_splits.md
[168] Split APK 是什么APK - CSDN文库 https://wenku.csdn.net/answer/3xuck01qbn
[169] android Parcelable自动生产插件_mob64ca140a1f7c的技术博客_51CTO博客 https://blog.51cto.com/u_16213657/13342540
[170] Android 插件化基础概念插件化的核心思想在于将 App 的各项功能模块拆分成独立的插件(通常是 APK 文件),主 - 掘金 https://juejin.cn/post/7514682489325305894
[171] LibChecker:安卓应用架构分析专家一、软件简介 LibChecker 是一款专业的安卓应用架构分析工具,旨在帮助 - 掘金 https://juejin.cn/post/7546977677473103899
[172] 推荐项目:依赖分析Gradle插件,为您的Android构建健康把脉-CSDN博客 https://blog.csdn.net/gitblog_01192/article/details/141454739
[173] com.autonomousapps.dependency-analysis https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis/2.15.0
[174] 深度揭秘:高效构建利器 —— 依赖分析Gradle插件-CSDN博客 https://blog.csdn.net/gitblog_00042/article/details/138789246
[175] sbt-dependency-analyzer https://github.com/bitlap/sbt-dependency-analyzer
[176] android dependency analyzer 用法_mob64ca12da726f的技术博客_51CTO博客 https://blog.51cto.com/u_16213341/13220424
[177] android系统 使用哪些工具可以分析组件间的依赖_android中查看binary的依赖关系-CSDN博客 https://blog.csdn.net/shi450561200/article/details/145861833
[178] Android 包体积优化实践——入门级攻略通过系统化的优化策略,可显著降低包体积,提升用户下载意愿与应用性能。优化过程 - 掘金 https://juejin.cn/post/7483449728393363468
[179] Gradle分发包的内部解析Gradle分发包的内部解析 当看到有人问"Gradle分发包里有什么?"时,我最初觉得好笑 - 掘金 https://juejin.cn/post/7547559094618750995
[180] Android应用瘦身教程:使用LibChecker分析与优化APK体积-CSDN博客 https://blog.csdn.net/gitblog_00988/article/details/151891898
[181] Shrink size of outputs on disk #1395 https://github.com/autonomousapps/dependency-analysis-gradle-plugin/issues/1395
[182] APK瘦身的方法-CSDN博客 https://blog.csdn.net/u014686606/article/details/154749136
[183] android module存在不同版本依赖会使包体增加吗_mob649e81586edc的技术博客_51CTO博客 https://blog.51cto.com/u_16175450/12722346
[184] 精益求精:Android应用体积优化的终极指南_android 包体积优化-CSDN博客 https://blog.csdn.net/u011897062/article/details/132967870
[185] Weryfikacja zależności https://developer.android.com/build/dependency-verification?authuser=5&hl=pl
[186] android 检查包冲突_mob64ca12efd81c的技术博客_51CTO博客 https://blog.51cto.com/u_16213429/13314407
[187] Could not resolve all dependencies for configuration ':launcher:debugRuntimeClasspath'_编程语言-CSDN问答 https://ask.csdn.net/questions/8818363
[188] Android报错Error: Program type already present的依赖冲突-CSDN博客 https://blog.csdn.net/shejizuopin/article/details/148398435
[189] Cómo depurar errores de resolución de dependencias https://developer.android.com/build/dependency-resolution-errors?hl=es-419
[190] android 排除包里的重复依赖_mob64ca12f7ae31的技术博客_51CTO博客 https://blog.51cto.com/u_16213462/12959068
[191] Android 查看并解决重复依赖at com.android.builder.dexing.DexArchiveMer - 掘金 https://juejin.cn/post/7460934174838063113
