Booster

移动 APP 质量优化框架
授权协议 Apache-2.0
开发语言 Kotlin Java
所属分类 开发工具、 性能测试和优化
软件类型 开源软件
地区 国产
投 递 者 鞠安民
操作系统 Android
开源组织 滴滴出行
适用人群 未知
 软件概览

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

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

Booster 能做什么?

性能检测

使用 Booster 可以发现潜在的性能问题,例如,在应用中调用可能阻塞 UI 线程或者主线程的 API,如:I/O API 等。详情请参见: booster-transform-lint

性能优化

对于开发者来说,线程管理一直是个头疼的问题,特别是第三方 SDK 中的线程,过多的线程可能会导致内存不足,然而幸运的是,这些问题都能通过 Booster 来解决。

系统问题修复

例如全局性地修复 Android API 25 版本中 Toast 导致的崩溃。详情请参见:booster-transform-toastbooster-transform-shared-preferences.

应用瘦身

如:资源压缩及冗余资源删除资源索引内联及常量删除

快速上手

在 buildscript 的 classpath 中引入 Booster 插件,然后启用该插件:

buildscript {
    ext.booster_version = '0.14.0'
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
        classpath "com.didiglobal.booster:booster-task-all:$booster_version"
        classpath "com.didiglobal.booster:booster-transform-all:$booster_version"
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.didiglobal.booster'

然后通过执行 assemble task 来构建一个优化过的应用包,构建完成后,在 build/reports/ 目录下会生成相应的报告。

$ ./gradlew assembleRelease
  • 结合booster wiki以及官方博客学习booster的代码。 booster主要分为两个部分,一个是基于其task spi的自定义task,一个是基于transformer api 自定义 transformer,我的理解,其中所说的spi类似api一样的存在. SPI全称Service Provider Interface,在Java中还是一个比较重要的概念,是Java提供的一套用来被第三

 相关资料
  • Click 的 300ms 延迟响应 click 的 300ms 延迟是由双击缩放(double tap to zoom)所导致的,由于用户可以进行双击缩放或者双击滚动的操作,当用户一次点击屏幕之后,浏览器并不能立刻判断用户是确实要打开这个链接,还是想要进行双击操作。因此,移动端浏览器就等待 300 毫秒,以判断用户是否再次点击了屏幕。 随着响应式网页逐渐增多,用户使用双击缩放机会减少,这 300

  • 网络加载 优化请求 优化请求包大小 代码压缩 Gzip压缩 不同网络(2G/3G/4G/wifi)图片尺寸 合理减少Header字段/cookie MTU策略(1500字节) 首屏加载时间控制 3s完成(5s为用户最大容忍度) 网络平均速度(2.71Mb/s = 0.33875MBps(1Mbps=8MBps) = 346.88KBps) 不超过1041KB,经验值200K(考虑打开响应、网络连接

  • 本文向大家介绍Android 优化之app启动优化的实现,包括了Android 优化之app启动优化的实现的使用技巧和注意事项,需要的朋友参考一下 App 启动方式 冷启动 App 没有启动过或 App 进程被杀,系统中不存在该 App 进程,此时启动即为冷启动。需要创建 App 进程,加载相关资源,启动 Main Thread,初始化首屏 Activity 等。在这个过程中,屏幕会显示一个空白的

  • 顾名思义,WebSocket是使用Web的东西。 Web通常与浏览器页面交织在一起,因为这是在线显示数据的主要方式。 但是,非浏览器程序也使用在线数据传输。 iPhone(最初)和iPad(后来)的发布引入了一个全新的网络互联世界,而不必使用网络浏览器。新的智能手机和平板电脑设备利用原生应用程序的强大功能提供独特的用户体验。 移动为何如此重要? 目前,有10亿活跃的智能手机。 也就是说,数百万的潜

  • 我正在尝试创建一个小的PDF文件,嵌入一个优化的PNG图像显示为3页PDF的页眉和页脚(相同的图像必须在PDF中显示6倍) 我优化的PNG映像只有2.3KB。看起来很锋利。 我还尝试制作一个测试页面,并使用wkhtml2pdf,但它做了同样的事情。添加低质量标志没有任何区别。 PDF规范建议支持PNG? 从略读PDF规范,它看起来像是支持PNG图像。

  • 我试图解决一个优化问题,它非常类似于背包问题,但不能用动态规划来解决。我想解决的问题与这个问题非常相似: