一切以官方文档为准,以下仅个人走读记录。
既然模块这么多,那就先理理吧,然后分类逐个看下。
- 架构设计文档:booster.johnsonlee.io/zh/
- 模块数量(65+3(test)=68),详见settings.gradle.kts
- 模块大致分类:基础兼容,instrument,transform(asm|javassist),task
- 模块依赖关系如下:
---基础兼容---
booster.gradle
kotlin-stdlib
kotlin-reflect
apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
apply plugin: 'io.johnsonlee.buildprops'
booster-annotations 提供了 *Booster* 插件开发相关的注解
booster-kotlinx 提供了一系列工具类以及针对 *JDK* 的扩展属性和方法
booster-build 提供了操作工程及构建环境相关的实用工具类
booster-kotlinx
booster-annotations
booster-android-gradle-compat 对 *Android Gradle Plugin API* 的抽象,用于消除 *Android Gradle Plugin* 版本间的差异
com.android.tools:repository
com.android.tools:sdklib
com.android.tools.build:gradle
booster-android-gradle-vX_X 兼容
booster-android-gradle-compat
booster-android-gradle-api 对 Android gradle API 的抽象,用于屏蔽不同的 Android gradle plugin 版本之间的差异,解决其兼容问题。
booster-kotlinx
booster-android-gradle-compat
booster-android-gradle-v3_3
booster-android-gradle-v3_4
booster-android-gradle-v3_5
booster-android-gradle-v3_6
booster-android-gradle-v4_0
booster-android-gradle-v4_1
booster-android-gradle-v4_2
booster-android-gradle-v7_0
booster-android-gradle-v7_1
booster-android-gradle-v7_2
booster-android-gradle-v7_3
com.android.tools.build:gradle
booster-task-spi 提供了 *Booster* 插件开发相关的 SPI
com.android.tools.build:gradle
booster-transform-spi 提供了通用的字节码操作相关的 SPI
booster-transform-util 提供了通用的字节码操作相关的实用类和扩展属性及方法
booster-transform-spi
booster-build
commons-compress
org.eclipse.jgit
booster-gradle-plugin 提供了 Booter Gradle 插件
auto-service
booster-annotations
booster-api
booster-transform-util
com.android.tools.build:gradle
booster-api 提供了与字节码操作相关的高层次 API
booster-android-gradle-api
booster-task-spi
booster-transform-spi
booster-transform-util
auto-service
com.android.tools.build:gradle
booster-aapt2 提供了一系列工具类和扩展方法用于解析 *AAPT2* 编译的资源
protobuf-java
booster-command 提供了用于发现和调用外部命令的 SPI,允许开发者来实现自定义的外部命令提供者。
booster-build
commons-io
booster-graph 提供了用于在类继承分析过程中构建调用图的相关的 API
booster-kotlinx
booster-graph-dot 提供了 `dot` 格式的 Graph 渲染
booster-command
booster-graph
booster-kotlinx
booster-graph-json 提供了 `json` 格式的 Graph 渲染
booster-graph
booster-cha 提供了类继承分析相关的 API
booster-command
booster-graph
booster-transform-util
io.johnsonlee:once
booster-cha-asm 提供了基于 ASM 的类继承分析
booster-cha
asm
asm-tree
---transform---
booster-transform-asm 提供了基于 *ASM* 的字节码操作相关的实用类和扩展属性及方法
auto-service
asm
booster-transform-javassist 提供了基于 *Javassist* 的字节码操作相关的实用类和扩展属性及方法
auto-service
booster-annotations
booster-build
booster-transform-spi
booster-transform-util
javassist
以下16个模块为asm字节码用例、
booster-transform-activity-thread
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-br-inline This module is used for BR index inline if databinding is enabled.
booster-aapt2
booster-api
booster-transform-asm
booster-transform-finalizer-watchdog-daemon
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-logcat
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-media-player
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-res-check
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-service-loader used for `ServiceLoader` optimization on Android, as we known, JDK provided `ServiceLoader` since Java 1.5, due the different implementation, using `ServiceLoader` on Android platform will cause performance issue, booster trying to fix this problem by manipulate the bytecode.
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-shared-preferences
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-r-inline used for resource index inline, such as fields in `R$id`, `R$layout`, `R$string`, etc.
booster-aapt2
booster-api
booster-transform-asm
booster-transform-thread used for multi-threading optimization.
auto-service
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-toast provides a transformer that used to fix system bug caused by `Toast` on Android 7.1.1
booster-api
booster-transform-asm
com.android.tools.build:gradle
booster-transform-usage used to find the usage of specific API.
booster-api
booster-transform-asm
booster-transform-webview
booster-api
booster-transform-asm
com.android.tools.build:gradle
---task---
booster-task-check-snapshot 插件实例,checkSnapshot用于检查依赖中是否包含有 snapshot 的依赖项
auto-service
booster-api
com.android.tools.build:gradle
booster-task-list-artifact 插件实例,用于显示 Android 工程的 artifacts
auto-service
booster-api
com.android.tools.build:gradle
booster-task-list-permission 插件实例,显示本工程依赖的 AAR 中使用的 Android 权限列表。
auto-service
booster-api
com.android.tools.build:gradle
booster-task-list-shared-library 插件实例,显示每个依赖项中包含的动态库
auto-service
booster-api
com.android.tools.build:gradle
booster-task-analyser 插件实列,analyseReferenceXXX
auto-service
booster-aapt2
booster-api
booster-cha-asm
booster-graph-dot
booster-graph-json
booster-transform-asm
com.android.tools.build:gradle
booster-task-graph 插件用例,assembleDebug.dot.png
auto-service
booster-api
booster-graph-dot
booster-command
io.johnsonlee:once
com.android.tools.build:gradle
com.android.tools.build:builder
booster-task-compression 提供了图像资源压缩任务基类,允许开发者对其进行扩展
auto-service
booster-aapt2
booster-api
booster-command
com.android.tools.build:gradle
com.android.tools.build:builder
booster-task-resource-deredundancy
auto-service
booster-task-compression
com.android.tools.build:gradle
com.android.tools.build:builder
booster-task-compression-cwebp 插件实例,assembleDebug -Pbooster.task.compression.cwebp.quality=75
auto-service
booster-task-compression
com.android.tools.build:gradle
com.android.tools.build:builder
booster-pngquant-provider 单独仓
auto-service
booster-kotlinx
booster-command
booster-task-compression-pngquant 插件实例,pngquant
auto-service
booster-annotations
booster-task-compression
com.android.tools.build:gradle
com.android.tools.build:builder
booster-task-compression-processed-res 插件实例,*resources-${variant}.ap_* file compression
auto-service
booster-task-compression
com.android.tools.build:gradle
com.android.tools.build:builder
---instrument---
booster-android-api 仅用于编译期 Android API 的插桩
booster-android-instrument 提供用于字节码注入相关的工具类
booster-android-api
以下9个模块为实例
booster-android-instrument-activity-thread
booster-android-api
booster-android-instrument
booster-android-instrument-finalizer-watchdog-daemon
booster-android-api
booster-android-instrument
booster-android-instrument-logcat
booster-android-api
booster-android-instrument-media-player
booster-android-api
booster-android-instrument
booster-android-instrument-res-check
booster-android-api
booster-android-instrument
booster-android-instrument-shared-preferences
booster-android-api
booster-android-instrument
booster-android-instrument-thread
booster-android-api
booster-android-instrument
booster-android-instrument-toast
booster-android-api
booster-android-instrument
booster-android-instrument-webview
booster-android-api
booster-android-instrument
参考文档:
https://juejin.cn/post/6844903859471515655
https://github.com/didi/booster
https://booster.johnsonlee.io/zh/