Android课题研究

MVP 即 Minimum Viable Product,通过做出能满足最基本功能的产品,不断接受用户反馈,快速迭代,直到做出真正符合需求的好产品。

一、Android应用架构治理

  1. 对源码进行依赖分析、静态检查、自动化重构,构建合理的组件/模块化方案
  2. 编写Gradle/AS插件,在编译时优化构建及插桩处理
  3. 对构建过程和产物进行IR分析(bytecode、Smali),提升应用安全性稳定性
  4. 规范和清晰的源码结构
  5. 完善CI/CD流水线
  6. 以更加深入底层的方式,分析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),源码可测性严重不足(不包含单元测试、集成测试、自动化测试用例)

一、性能检测

  1. CPU使用情况
  2. 帧率优化/卡顿统计
  3. 内存泄漏及资源占用管理
  4. 网络响应及弱网体验
  5. 启动速度和时延

二、性能指标

  1. 安装文件大小
  2. Context对象泄漏
  3. 低配手机适配
  4. 网络请求加密
  5. 废弃API禁止使用
  6. 离线模式(提升用户体验)
  7. 帧率优化(适配高刷)
  8. 对象装箱和拆箱(低内存)
  9. 冷启动速度
  10. 布局加载耗时
  11. 内存使用率(减少gc)
  12. 多线程并发(响应速度)
  13. 应用架构治理
  14. for循环加入内联方法
  15. 其他JVM调优方案

三、最佳实践

  1. 多媒体文件缩量(本地和远端资源)
  2. 分配优先级按需拉取/上传数据
  3. 定位/通知/屏幕唤醒等耗电管理
  4. 使用性能监控工具(兼容性及性能评分)

四、性能监控工具

  1. Android Vitals(Crash 和 ANR)
  2. JankStats Library(帧率、UI状态报告、卡顿报告)
  3. Benchmark test(CI 流程中集成)
  4. Android Profiler (内存、CPU、网络、耗电、其他手机资源)
  5. Firebase Performance Monitoring(记录运行数据,启动耗时、屏幕渲染、网络请求)

五、挑战与瓶颈

  1. 手机设备太过碎片化(厂商、定制操作系统、SDK版本、屏幕尺寸、CPU架构、组网)
  2. 太多Android系统版本需要兼容(6.0~14 存在 11 个版本的SDK)
  3. 功能稳定性测试不足(单元测试、集成测试、自动化测试)

六、总结

应用迭代过程中始终保持稳定运行、高效用户体验,性能优化是不可或缺的一环。

BaseViewModel with STATE
© 2020 qomg
Powered by hexo | Theme is blank