Skip to content

didi/booster

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
May 28, 2023 00:09
June 4, 2019 11:52
December 2, 2022 22:32
September 1, 2022 22:00
May 28, 2023 00:09
September 27, 2019 09:03
April 23, 2019 17:28
April 23, 2019 17:28
January 12, 2020 03:17
January 12, 2020 03:17

Booster

GitHub Build Status GitHub Release

Overview | 概�?

Booster is an easy-to-use, lightweight, powerful and extensible quality optimization toolkit designed specially for mobile applications. The primary goal is to solve quality problems with the increase of APP complexity, such as performance, stability, and package size, etc.

Booster provides a collection of modules for performance detection, multithreading optimization, resources index inline, redundant resources reduction, resources compression, system bug fixing, etc. Using booster, the stability of application can be increased by 15% ~ 25%, and the package size can be reduced by 1MB ~ 10MB.

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

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

What can Booster be used for? | Booster �?��?�什�??

  • Performance detection | 性�?�检测

    Potential performance issues could be found by using Booster, for example, calling APIs that may block the UI thread or main thread, such as I/O APIs. About the details, please see booster-task-analyser.

    使用 Booster 可以发现潜在的性�?�问�?,例如,在应用中�?用可�?��?�塞 UI 线程�?�者主线程的 API,如:I/O API 等。详�?�请参�?: booster-task-analyser

  • Performance optimization | 性�?��?化

    Thread management has always been a problem for developers, especially the threads started by third-party SDKs, starting too many threads may cause OOM, fortunately, these issues can be solved by Booster. About the details, please see booster-transform-thread

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

  • System bugs fix | 系统问�?修复

    Such as fixing the crash caused by Toast globally on Android API 25. About the details, please see booster-transform-toast and booster-transform-shared-preferences.

    例如全局性地修复 Android API 25 �?本中 Toast 导致的崩�?。详�?�请参�?:booster-transform-toast�?booster-transform-shared-preferences.

  • Package size reduction | 应用�?�身

    Such as image resources compression, r inline, etc.

    如:资�?压缩及冗余资�?�?�除�?资�?索引内�?�

  • Other things you can imagine | 其�?你�?��?��?�得�?�的

Prerequisite | �?决条件

  • JDK (minimum version required is JDK 1.8, JDK 11 is recommended)
  • Gradle version 4.10+
  • Android Gradle Plugin version 3.3+

The following table lists which version of Gradle is required for each version of the Android Gradle plugin. For the best performance, please use the latest possible version of both Gradle and the plugin.

下表�?�出了�?�个 Android Gradle 插件�?本所需的 Gradle �?本。�?获得最佳性�?�,请使用 Gradle 和插件这两者的最新�?本。

Android Gradle Plugin Gradle
3.3.0 - 3.3.3 4.10.1+
3.4.0 - 3.4.3 5.1.1+
3.5.0 - 3.5.4 5.4.1+
3.6.0 - 3.6.4 5.6.4+
4.0.0+ 6.1.1+
4.1.0+ 6.5+
4.2.0+ 6.7.1+
7.0 7.0+
7.1 7.1+
7.2 7.3.3+
7.3 7.4+
7.4 7.5+

Best Practise | 最佳实践

The best practise of using Booster is integrating the specific module to solve the problems you have encountered as following:

集�?? Booster 的最佳方式�?�集�??真正需�?的模块来解决项目中�?��?�的特定问�?。

buildscript {
    ext.booster_version = '4.16.2'
    repositories {
        google()
        mavenCentral()

        // OPTIONAL If you want to use SNAPSHOT version, sonatype repository is required.
        maven { url 'https://oss.sonatype.org/content/repositories/public' }
    }
    dependencies {
        classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version" //
        // ② figure out the features you really need, then choose the right module for integration
        // ② 弄清楚真正需�?的特性,然�?�从下面的模块�?�表中选择正确的模块进行集�??
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()

        // OPTIONAL If you want to use SNAPSHOT version, sonatype repository is required.
        maven { url 'https://oss.sonatype.org/content/repositories/public' }
    }
}

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

Then using the following command in terminal to check if Booster enabled

然�?�在�?端用如下命令来确认 Booster �?��?��?�用:

./gradlew assembleDebug --dry-run

If transformClassesWithBoosterForDebug can be found in the output, it means Booster is enabled. Congratulations! 🎉🎉🎉

如果在命令行输出中�?��?��?� transformClassesWithBoosterForDebug 说�?� Booster 已经�?�用了,那�?�?�喜你�? 🎉🎉🎉

The plugins DSL also supported since Booster 3.0.0

Booster3.0.0 开始支�? plugins DSL 的方式来�?�用

plugins {
    id 'com.didiglobal.booster' version '4.16.2'
}

Here are all the modules of Booster:

Common

  • booster-aapt2 - AAPT2 相关 API

    implementation "com.didiglobal.booster:booster-aapt2:$booster_version"
  • booster-api - Booster 插件开发 API

    this module contains both booster-transform-spi and booster-task-spi

    implementation "com.didiglobal.booster:booster-api:$booster_version"
  • booster-cha - Class Hierarchy Analysis API

    implementation "com.didiglobal.booster:booster-cha:$booster_version"
  • booster-command - SPI for external command discovery

    implementation "com.didiglobal.booster:booster-command:$booster_version"

Performance

Package Size

  • booster-task-compression-cwebp - 采用 cwebp 对资�?进行压缩

    classpath "com.didiglobal.booster:booster-task-compression-cwebp:$booster_version"

    The option android.precompileDependenciesResources need to be set on Android Gradle Plugin 3.6 and higher

    android.precompileDependenciesResources=false
  • booster-task-compression-pngquant - 采用 pngquant 对资�?进行压缩

    classpath "com.didiglobal.booster:booster-task-compression-pngquant:$booster_version"

    The option android.precompileDependenciesResources need to be set on Android Gradle Plugin 3.6 and higher

    android.precompileDependenciesResources=false

    booster-pngquant-provider could be used for image compressing by pngquant without installation

  • booster-task-compression-processed-res - ap_ 文件压缩

    classpath "com.didiglobal.booster:booster-task-compression-processed-res:$booster_version"
  • booster-task-resource-deredundancy - 去冗余资�?

    classpath "com.didiglobal.booster:booster-task-resource-deredundancy:$booster_version"

    The option android.precompileDependenciesResources need to be set on Android Gradle Plugin 3.6 and higher

    android.precompileDependenciesResources=false
  • booster-transform-r-inline - 资�?索引内�?�

    classpath "com.didiglobal.booster:booster-transform-r-inline:$booster_version"
  • booster-transform-br-inline - DataBinding BR索引内�?�

    classpath "com.didiglobal.booster:booster-transform-br-inline:$booster_version"

System Bug

  • booster-transform-finalizer-watchdog-daemon - 修复 finalizer 导致的 TimeoutException

    classpath "com.didiglobal.booster:booster-transform-finalizer-watchdog-daemon:$booster_version"
  • booster-transform-media-player - 修复 MediaPlayer 崩�?

    classpath "com.didiglobal.booster:booster-transform-media-player:$booster_version"
  • booster-transform-res-check - 检查覆盖安装导致的 ResourcesAssets 未加载的 Bug

    classpath "com.didiglobal.booster:booster-transform-res-check:$booster_version"
  • booster-transform-toast - 修复 Toast 在 Android 7.1 上的 Bug

    classpath "com.didiglobal.booster:booster-transform-toast:$booster_version"
  • booster-transform-activity-thread - 处�?�系统 Crash

    classpath "com.didiglobal.booster:booster-transform-activity-thread:$booster_version"

Utility

  • booster-task-check-snapshot - 检查 SNAPSHOT �?本

    classpath "com.didiglobal.booster:booster-task-check-snapshot:$booster_version"
  • booster-task-list-permission - �?�示 AAR 使用的�?�?清单

    classpath "com.didiglobal.booster:booster-task-list-permission:$booster_version"
  • booster-task-list-shared-library - �?�示 AAR 包�?�的动�?库清单

    classpath "com.didiglobal.booster:booster-task-list-shared-library:$booster_version"

Unit Test

  • booster-test-asm - Support running unit test with ASM based transformer

    classpath "com.didiglobal.booster:booster-task-asm:$booster_version"
  • booster-test-javassist - Support running unit test with Javassist based transformer

    classpath "com.didiglobal.booster:booster-task-javassist:$booster_version"

Samples | 示例

Documentation | 文档

About the details, please see Booster Inside�?深入�?�解 Booster)

API Reference

About the API reference, please see Booster API Reference

Contributing

Welcome to contribute by creating issues or sending pull requests. See Contributing Guideline.

欢迎大家以 issue �?�者 pull request 的形式为本项目作贡献。详�? Contributing Guideline

Community

Booster交�?群

License

Booster is licensed under the Apache License 2.0.