Booster 4.7.0 版本发布
Booster 又双叒叕发布了新的版本—— v4.7.0,本次更新内容如下:
- Fix issue #304:
ScheduledThreadPoolExecutor
transform bug by @lpw14 in https://github.com/didi/booster/pull/305
Booster 又双叒叕发布了新的版本—— v4.7.0,本次更新内容如下:
ScheduledThreadPoolExecutor
transform bug by @lpw14 in https://github.com/didi/booster/pull/305关于数据的可变性或者不可变性,是指数据在被创建后,到底支不支持可变(修改),尽管我们知道 Java 中的 String 采用不可变的设计有诸多的优点,但似乎在我过去的职业生涯中,很少系统性地去思考这个问题,直到最近,看其他同学的代码的时候,才意识到这个问题的严重性。
相信大家对于 JavaPoet 和 KotlinPoet 并不陌生,皆出自大名定鼎鼎的 Square。一般地,我们在用 APT (Annotation Processing Toolkit) 或者 KAPT 在编译期生成源代码时,一般都会用 JavaPoet 来生成 Java 源代码,而用 KotlinPoet 来生成 Kotlin 源代码,乍一看,哇!好酷,感觉特别有逼格。
Booster 又双叒叕发布了新的版本—— v4.6.0,本次更新内容如下:
BaseVariant.mergedNativeLibs: Collection<File>
Booster 又双叒叕发布了新的版本—— v4.5.3,本次更新内容如下:
Booster 又双叒叕发布了新的版本—— v4.5.1,本次更新内容如下:
Booster 之所以保持着高性能,除了并行 I/O 以外,还有一个很重要的方面 —— 单次 I/O。可能有人会问,什么叫单次 I/O?所谓单次 I/O 是指,在 Transform 的过程中,对于每一个输入 (JAR/DIR) ,Booster 只需要一次读和一次写,便可以实现整个 app 的字节码以流水线的方式进行处理,也就是 Bytecode Transform Pipeline。这就意味着,每个 Transformer
只有一次机会来处理 class ,但如果想要在 Transformer
先收集一些信息,再在 Transform 的过程中将这些收集到的信息,以字节码的方式写入到某个 class 中,就不太容易实现。一个典型的例子便是 SPI 优化,虽然 R8 可以对 SPI 进行化,但是,对写代码的姿势有一定的要求。
Stability is one of the three most important metrics for Coupang apps in providing a Wow customer experience. The mobile app monitoring platform aims to provide a reliable, easy-to-use, high extensibility monitoring platform for Coupang family apps. The platform supports not only mobile apps but web apps. The platform is based on the Lumberjack logging system and supports high-performance real-time stack trace de-obfuscation and symbolication within a few milliseconds (the industry standard is in hours). Thus, it is able to detect the issue within 3 mins and identify the root cause within 2 mins. Its high extensibility allows us to build more QoE/QoS metrics.
Booster 又双叒叕发布了新的版本—— v4.3.0,本次更新内容如下:
Transformer
,并同时支持 ASM 和 Javassist