booster一模块依赖分析

194 阅读3分钟
一切以官方文档为准,以下仅个人走读记录。
既然模块这么多,那就先理理吧,然后分类逐个看下。
  1. 架构设计文档:booster.johnsonlee.io/zh/
  2. 模块数量(65+3(test)=68),详见settings.gradle.kts
  3. 模块大致分类:基础兼容,instrument,transform(asm|javassist),task
  4. 模块依赖关系如下:
---基础兼容---
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/