资料介绍
软件简介
ByteX 是一个基于 gradle transform api 和 ASM 的字节码插件平台,由字节跳动抖音 Android 团队提供。
目前集成了若干个字节码插件,每个插件完全独立,既可以脱离 ByteX 这个宿主而独立存在,又可以自动集成到宿主和其它插件一起整合为一个单独的 Transform。插件和插件之间,宿主和插件之间的代码是完全解耦的(有点像组件化),这使得ByteX在代码上拥有很好的可拓展性,新插件的开发将会变得更加简单高效。
背景
如果所有feature都开发一个单独的插件,每个插件编译构建耗时+10s,各个插件叠在一起,编译耗时就会呈线性增长;那如果我们所有feature都基于一个现成的字节码插件做迭代开发,又会让插件代码变得越来越臃肿,代码耦合严重。所以就有了这个想法,单独做一个字节码插件开发平台,新的feature可以基于它做扩展。
特点
-
代码复用。公共的代码下沉下到common,给所有插件复用,这样每个插件就只需要专注于字节码插桩就行了。
-
插件间代码隔离,相互解耦。之前字节码的相关feature都是基于某个字节码插件module来迭代扩展的,但各个feature的代码耦合在一起,久而久之这个插件module就成为了大杂烩。而基于ByteX,各个feature都独立成一个个插件,各个feature的代码相互隔离,相互独立,有利于新插件的功能拓展。
-
平台化让transform更高效。
-
class文件多线程并发处理,充分利用打包机的CPU资源。
-
插件间自动无缝地整合成一个Transform,提高处理构建的效率。Transform过程中,对class文件的IO是比较耗时的,把所有的plugin整合成一个单独transform可以避免打包的额外时间开销呈线性增长。让耗时从1+1=2,变成1+1<2或者约等于1。
-
-
插件移植性强。每个插件都可以脱离ByteX宿主,独立成一个transform,独立工作。
项目结构
TransformEngine
负责遍历读取工程和Android SDK里的所有class文件,并回写到transform指定目录。
base-plugin
宿主,也就一个壳。
common
基础代码库,包括类图构建逻辑,日志,提供给各个插件的适配接口等。
其它插件module
依赖common,实现相应的接口和各自的字节码插桩逻辑。
快速接入
在build.gradle里添加以下配置,按需apply你的插件:
buildscript {
ext.
repositories {
google()
jcenter()
maven {
url "https://artifact.bytedance.com/repository/byteX/"
}
}
dependencies {
classpath "com.bytedance.android.byteX:base-plugin:${plugin_version}"
// Add bytex plugins' dependencies on demand. 按需添加插件依赖
classpath "com.bytedance.android.byteX:refer-check-plugin:${plugin_version}"
// ...
}
}
apply plugin: 'com.android.application'
// apply ByteX宿主
apply plugin: 'bytex'
ByteX {
enable true
enableInDebug false
logLevel "DEBUG"
}
// 按需apply bytex 插件
apply plugin: 'bytex.refer_check'
// ...
注意:如果不apply ByteX宿主,那么这些ByteX插件与普通的插件无异,将会各自形成单独的Transform。反之,所有ByteX的插件将会自动融合成一个Transform。
以下是基于ByteX开发的插件,可以进入各个插件的README.md了解插件的接入方式。
已集成的插件
- access-inline-plugin(access方法内联)
- shrink-r-plugin(R文件瘦身和无用资源检查)
- closeable-check-plugin(文件流的close检查)
- const-inline-plugin(常量内联)
- field-assign-opt-plugin(优化多余赋值指令)
- getter-setter-inline-plugin (getter和setter方法内联)
-
method-call-opt-plugin(干净地删除某些方法调用,如
Log.d
) - coverage-plugin(线上代码覆盖率)
- refer-check-plugin(检查是否有调用不存在的方法和引用不存在的字段)
- serialization-check-plugin(序列化检查)
- SourceFileKiller(删除SourceFile和行号属性,作为示例)
- ButterKnifeChecker(检测跨module使用ButterKnife可能导致的问题)
- RFileKnife(修复R.java太大编译报code too large的问题)
- KICAD插件使用说明书 8次下载
- TYPE C24PIN双排插件原理图 28次下载
- 12*12插件触控开关原理图 4次下载
- 4.5*4.5插件触控开关原理图 9次下载
- 插件开发之VSCode
- keil 5代码整理插件安装教程
- 16位CRC验证码生成VI工具下载 54次下载
- 如何利用基于字节码插桩实现的多线程调试工具 13次下载
- 51单片机中汇编多字节24位二进制转BCD码的实例说明
- Unity3D插件——LitJson下载 0次下载
- 视频监控系统跨浏览器插件的研究与实现 5次下载
- VC6.0代码补全插件 9次下载
- 智能仪表多字节二进制数转换BCD码 54次下载
- AN586:将Jam STAPL和Jam STAPL字节码播放器移植到嵌入 27次下载
- 基于数据流的Java字节码分析
- GD32 MCU的选项字节是什么? 1017次阅读
- 教你如何开发VS Code插件? 1087次阅读
- Rust构建QEMU插件的框架 745次阅读
- CheckStyle插件导入代码规范 921次阅读
- SpringBoot中MybatisX插件的简单使用教程 1098次阅读
- 使用platformio平台和Arduino框架开发STM32G0 3012次阅读
- 使用汇编语言实现多字节BCD码加法减法的详细介绍 8436次阅读
- 干货:如何构建一个JavaScript插件系统(附源码) 2971次阅读
- 立功科技嵌入式平台“软”实力——二维码算法篇 1499次阅读
- Tomcat服务器是一个免费的开放源代码的Web应用服务器 2.2w次阅读
- 关于嵌入式系统可视化集成开发平台的详细剖析 1869次阅读
- 如何利用单片机向PC发送一个字节数据 7940次阅读
- vscode常用插件有哪些 2w次阅读
- jquery插件开发实例(MSBar2D图效果、手风琴特效插件) 1988次阅读
- jquery插件写法及用法(jQuery插件开发全解析) 1w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多