Android课题研究
MVP 即 Minimum Viable Product,通过做出能满足最基本功能的产品,不断接受用户反馈,快速迭代,直到做出真正符合需求的好产品。
一、Android应用架构治理
- 对源码进行依赖分析、静态检查、自动化重构,构建合理的组件/模块化方案
- 编写Gradle/AS插件,在编译时优化构建及插桩处理
- 对构建过程和产物进行IR分析(bytecode、Smali),提升应用安全性稳定性
- 规范和清晰的源码结构
- 完善CI/CD流水线
- 以更加深入底层的方式,分析APK
二、Android应用质量治理
切入点初步定三个
1. 高性能
- 描述:精简apk尺寸,提升启动速度,引入baseline、benchmark、jacoco、splitapks、lint、profile等用以优化应用质量
- 措施:
a) 检查apk是否可精简,指定 cpu架构使用 splitapks 拆包
b) profile测量启动速度
c) baseline 打包(源码层面)
d) benchmark 对代码进行基准化分析(源码层面)
e) jacoco扫描代码覆盖率(源码层面)
f) 封装更加强大符合实际使用的lint规则及lintFix方案,剔除坏味代码(源码层面)
2. 高可靠
- 描述:检查应用是否加固(扫描apk),是否存在崩溃防护、错误上报、网络安全防护、文件加密存储及应用运行权限是否合规(扫描源码)
- 措施:封装相应的各类工具(gradle插件、扫描平台、上报监控平台)
- 拓展:融合应用灰度发布方案
3. 高效交互
- 描述:前期埋点记录页面路径、操作留痕、功能曝光率等,常用功能提级减少交互路径方便用户操作,热区功能支持动态配置等,根据各大厂UI规范给app打分(配色、文字、图标、圆角、阴影等,APP提交运行截图)
- 措施:开发埋点上报插件,UI规范审查指南
三、可视化协同设计平台
- 描述:一个用于开发原生(Android/iOS)应用的低代码平台,通过拖拽实现可视化应用设计,提供实时预览,减少应用开发过程中产品设计开发的沟通成本,最大化保证应用交付时UI还原度
- 预期:包含一系列元组化的UI套件,Android和iOS是不同的两套UI代码。在这个基础上抽象一层UI描述文件。开发一个跨平台桌面端应用,包含仪表盘、我的、设置三个常规功能入口,实现项目管理、资源管理、账号管理三个基础模块。
- 目标:开发一个跨平台桌面端应用,通过拖拽符合设计规范的UI套件进行原型设计和UI创意设计。开发可以直接使用该应用生成的代码,只需进行少许功能完善联调即可。
四、Android应用性能优化
- 描述:应用运行时性能检测记录5个方面(包含CPU、帧率、内存、网络、启动时延),建立15项性能指标对应用进行优化。同时考虑使用2-3个性能监控工具,在开发过程中(或CI/CD时)进行性能监控,及时发现问题。
- 预期:包含性能检测记录上报、影响性能的代码检测以及具体优化方案源码,使用三方工具对应用进行性能监控(内存泄漏、CPU占用率、网络状况、卡顿分析等),输出性能优化最佳实践。
- 目标:打造一套Android应用性能优化解决方案,以期在应用迭代过程中,始终保持良好的用户体验和稳定性。
- 风险:Android设备太过碎片化(厂商、定制操作系统、SDK版本、屏幕尺寸、CPU架构、组网等),有太多系统版本需要兼容(Android6.0~14 存在 11 个版本的SDK),源码可测性严重不足(不包含单元测试、集成测试、自动化测试用例)
一、性能检测
- CPU使用情况
- 帧率优化/卡顿统计
- 内存泄漏及资源占用管理
- 网络响应及弱网体验
- 启动速度和时延
二、性能指标
- 安装文件大小
- Context对象泄漏
- 低配手机适配
- 网络请求加密
- 废弃API禁止使用
- 离线模式(提升用户体验)
- 帧率优化(适配高刷)
- 对象装箱和拆箱(低内存)
- 冷启动速度
- 布局加载耗时
- 内存使用率(减少gc)
- 多线程并发(响应速度)
- 应用架构治理
- for循环加入内联方法
- 其他JVM调优方案
三、最佳实践
- 多媒体文件缩量(本地和远端资源)
- 分配优先级按需拉取/上传数据
- 定位/通知/屏幕唤醒等耗电管理
- 使用性能监控工具(兼容性及性能评分)
四、性能监控工具
- Android Vitals(Crash 和 ANR)
- JankStats Library(帧率、UI状态报告、卡顿报告)
- Benchmark test(CI 流程中集成)
- Android Profiler (内存、CPU、网络、耗电、其他手机资源)
- Firebase Performance Monitoring(记录运行数据,启动耗时、屏幕渲染、网络请求)
五、挑战与瓶颈
- 手机设备太过碎片化(厂商、定制操作系统、SDK版本、屏幕尺寸、CPU架构、组网)
- 太多Android系统版本需要兼容(6.0~14 存在 11 个版本的SDK)
- 功能稳定性测试不足(单元测试、集成测试、自动化测试)
六、总结
应用迭代过程中始终保持稳定运行、高效用户体验,性能优化是不可或缺的一环。
Author: qomg
License: 本博客所有文章除特别声明外,均采用许可协议 CC-BY-NC-4.0 转载请注明出处!