# Booster 简介

# 什么是 Booster ?

Booster 是一款专门为移动应用设计的易用、轻量级且可扩展的质量优化框架,其目标主要是为了解决随着 APP 复杂度的提升而带来的性能、稳定性、包体积等一系列质量问题。

Booster 不仅仅只是一个框架,它还提供了性能检测、多线程优化、资源索引内联、资源去冗余、资源压缩、系统 Bug 修复等一系列功能模块,可以使得稳定性能够提升 15% ~ 25%,包体积可以减小 1MB ~ 10MB,甚至更多。

# 为什么是 Booster ?

质量优化是所有应用开发者都要面临的问题,对于 DAU 千万级的 APP 来说,万分之一的崩溃率就意味着上千的用户受到影响,对于长时间使用的 APP 来说,其稳定性关乎着产品的品牌、口碑以及用户的收入,所以更是不容小觑。

随着业务的快速发展,业务复杂度不断提升,我们开始思考:

  1. 如何持续保证 APP 的质量?
  2. 当 APP 崩溃后,如何快速定位问题所属的业务线?
  3. 能不能在上线之前提前发现潜在的质量问题?
  4. 能不能对 APP 进行无侵入的全局质量优化而不需要推动各个业务线?

基于这些考虑,Booster 应运而生,经过一年多的时间不断打磨,从线上的数据来看,收益显著。由于目前在质量优化方面基于静态分析的开源项目屈指可数,加上质量优化对于 APP 开发者而言门槛偏高,因此,我们选择了将 Booster 开源,希望更多的开发者和用户能从中受益。

# Booster 的解决方案

# 持续保证 APP 质量

对于 APP 质量来说,每进行一次性能、稳定性优化都意味着投入大量人力和精力,而且,随着业务的膨胀、可能之前费了九牛二虎之力才取得的一点点成绩就被一个业务需求给付之一炬,而最节省人力的办法就是自动化和标准化,从代码风格到代码审查,从开发测试到集成测试,从灰度发布到全量上线。

Booster 通过 Gradle Plugin 的形式为 Android 工程质量把控提供了一套完整的框架,无论是代码、资源、动态库、依赖关系、包体积、性能等监控,都可以通过 Booster 来完成。

# 快速定位问题

作为开发者,我们经常会遇到发生在一个完全没有上下文的线程中,比如:通过 post 一个 Runnable 到主线程消息队列中,或者启一个匿名线程,当发生崩溃后,完全不知道这个 Runnable 或者线程从何而来,这对于我们排查问题来说,无疑是增加了不少成本,如何才能帮助开发人员快速定位这类问题呢?

Booster 提供了 Transformer SPI 让开发者更方便的在构建过程中注入字节码、类继承分析等等,并提供了针对线程的重命名能力,结合 APM 平台,让排查问题更加方便与高效。

# 提前发现问题

为了能提前发现问题,Booster 提供了静态分析的能力,通过在构建过程中对代码、资源以及构建中间产物进行分析,便可提前发现有性能问题、安全风险、违反应用商店政策的代码等。

# 无侵入性能优化

APP 工程或者组织结构到达一定规模,如果需要对整体性能、稳定性进行优化,是一件非常耗费精力的事情,这并不是说开发成本有多高,主要的成本其实是在跨团队、跨部门的沟通上,对于一些实验性的优化来说,没有明确的收益,业务方并不乐意「陪着你瞎折腾」,所以,为了避免这种情况的发生,Booster 通过 AOP(Aspect-Oriented Programming) 的方式,对 APP 进行无侵入的全局性能优化,而且对于业务方来说,几乎是完全透明的。