|
12 | 12 |
|
13 | 13 | - [x] v2 版已经支持 `AGP 7.4+` | ~~(v1 老版本是基于 `AGP4` 的 `Transform` 接口)~~ |
14 | 14 | - [x] 支持过滤和增量,并优化 `Transform` 流程,合理配置过滤时能极大幅度缩减编译时间。 |
| 15 | +- [x] 支持根据 `variant` 进行不同的配置和处理。 |
15 | 16 | - [x] 插件内部多线程并行 IO 处理,提升编译速度。 |
16 | 17 | - [x] 基于 `asm-tree` 实现的接口更加易于修改字节码。 |
17 | 18 | - [x] 插件平台化,支持挂载多个字节码修改器,且使用多个修改器也只会有一次 IO 产生。 |
|
56 | 57 |
|
57 | 58 | #### 使用 |
58 | 59 |
|
59 | | -1. 项目已经发到 `jitpack.io` 仓库,依赖如下 |
| 60 | +1. 项目已经发到 `jitpack.io` 仓库,在项目根 `build.gradle.kts` 中配置如下 |
60 | 61 |
|
61 | | - ```groovy |
| 62 | + ```kotlin |
62 | 63 | // Top-level build file |
63 | 64 | buildscript { |
64 | 65 | repositories { |
65 | | - maven { url 'https://jitpack.io' } |
| 66 | + maven { setUrl("https://jitpack.io") } |
66 | 67 | } |
| 68 | + |
67 | 69 | dependencies { |
68 | | - classpath "com.github.Ysj001.BytecodeUtil:plugin:<lastest-version>" |
| 70 | + // BCU 插件依赖 |
| 71 | + classpath("com.github.Ysj001.BytecodeUtil:plugin:<lastest-version>") |
69 | 72 | } |
70 | 73 | } |
71 | 74 |
|
72 | 75 | subprojects { |
73 | 76 | repositories { |
74 | 77 | maven { url 'https://jitpack.io' } |
75 | | - ... ... |
76 | 78 | } |
77 | 79 | } |
78 | 80 | ``` |
79 | 81 |
|
80 | | -2. 在 `android application` 模块中使用并配置插件 |
| 82 | +2. 在 `app` 模块的 `build.gradle.kts` 中的配置如下 |
81 | 83 |
|
82 | | - ```groovy |
83 | | - apply plugin: 'com.android.application' |
84 | | - // 使用 bcu 插件 |
85 | | - apply plugin: 'bcu-plugin' |
| 84 | + ```kotlin |
| 85 | + plugins { |
| 86 | + id("com.android.application") |
| 87 | + id("org.jetbrains.kotlin.android") |
| 88 | + // 添加 bcu 插件 |
| 89 | + id("bcu-plugin") |
| 90 | + } |
86 | 91 |
|
87 | 92 | // 插件扩展 |
88 | | - bytecodeUtil { |
89 | | - // 设置插件日志级别 (0 ~ 5) |
90 | | - loggerLevel = 1 |
91 | | - // 挂载你所需的修改器,可以挂载多个,插件内部按顺序执行 |
92 | | - modifiers = [ |
93 | | - // 你要挂载的修改器的 class |
94 | | - Class.forName("xxxxx") |
95 | | - ] |
96 | | - // 不需要处理的 class 文件过滤器,合理配置可提大幅升编译速度。 |
97 | | - notNeed = { entryName -> |
| 93 | + bcu { |
| 94 | + config { variant -> |
| 95 | + // 设置插件日志级别 (0 ~ 5) |
| 96 | + loggerLevel = 2 |
| 97 | + // 挂载你所需的修改器,可以挂载多个,插件内部按顺序执行 |
| 98 | + modifiers = arrayOf( |
| 99 | + // 将 CustomModifier 添加到 bcu 中 |
| 100 | + CustomModifier::class.java, |
| 101 | + ) |
| 102 | + } |
| 103 | + // 不需要处理的 class 文件过滤器。 |
| 104 | + filterNot { variant, entryName -> |
98 | 105 | // 这里传 false 表示不过滤 |
| 106 | + // 请按需配置过滤,合理配置可提大幅升编译速度 |
99 | 107 | false |
100 | 108 | } |
101 | 109 | } |
@@ -206,6 +214,7 @@ log 对应的具体含义: |
206 | 214 | | log key | 对应含义 | |
207 | 215 | | ------------------------------- | ------------------------------------------- | |
208 | 216 | | >>> loggerLevel | 当前 BCU 的日志等级(0~5) | |
| 217 | +| >>> variant | 当前变体名称 | |
209 | 218 | | >>> apply modifier | 添加进 BCU 的 Modifier | |
210 | 219 | | >>> xxxModifier initialize time | xxxModifier 在 initialize 阶段的耗时 | |
211 | 220 | | >>> bcu scan time | BCU 在 scan 阶段的总耗时 | |
|
0 commit comments