資料介紹
軟件簡介
ByteX 是一個基于 gradle transform api 和 ASM 的字節(jié)碼插件平臺,由字節(jié)跳動抖音 Android 團隊提供。
目前集成了若干個字節(jié)碼插件,每個插件完全獨立,既可以脫離 ByteX 這個宿主而獨立存在,又可以自動集成到宿主和其它插件一起整合為一個單獨的 Transform。插件和插件之間,宿主和插件之間的代碼是完全解耦的(有點像組件化),這使得ByteX在代碼上擁有很好的可拓展性,新插件的開發(fā)將會變得更加簡單高效。
背景
如果所有feature都開發(fā)一個單獨的插件,每個插件編譯構(gòu)建耗時+10s,各個插件疊在一起,編譯耗時就會呈線性增長;那如果我們所有feature都基于一個現(xiàn)成的字節(jié)碼插件做迭代開發(fā),又會讓插件代碼變得越來越臃腫,代碼耦合嚴重。所以就有了這個想法,單獨做一個字節(jié)碼插件開發(fā)平臺,新的feature可以基于它做擴展。
特點
-
代碼復用。公共的代碼下沉下到common,給所有插件復用,這樣每個插件就只需要專注于字節(jié)碼插樁就行了。
-
插件間代碼隔離,相互解耦。之前字節(jié)碼的相關(guān)feature都是基于某個字節(jié)碼插件module來迭代擴展的,但各個feature的代碼耦合在一起,久而久之這個插件module就成為了大雜燴。而基于ByteX,各個feature都獨立成一個個插件,各個feature的代碼相互隔離,相互獨立,有利于新插件的功能拓展。
-
平臺化讓transform更高效。
-
class文件多線程并發(fā)處理,充分利用打包機的CPU資源。
-
插件間自動無縫地整合成一個Transform,提高處理構(gòu)建的效率。Transform過程中,對class文件的IO是比較耗時的,把所有的plugin整合成一個單獨transform可以避免打包的額外時間開銷呈線性增長。讓耗時從1+1=2,變成1+1<2或者約等于1。
-
-
插件移植性強。每個插件都可以脫離ByteX宿主,獨立成一個transform,獨立工作。
項目結(jié)構(gòu)
TransformEngine
負責遍歷讀取工程和Android SDK里的所有class文件,并回寫到transform指定目錄。
base-plugin
宿主,也就一個殼。
common
基礎代碼庫,包括類圖構(gòu)建邏輯,日志,提供給各個插件的適配接口等。
其它插件module
依賴common,實現(xiàn)相應的接口和各自的字節(jié)碼插樁邏輯。
快速接入
在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開發(fā)的插件,可以進入各個插件的README.md了解插件的接入方式。
已集成的插件
- access-inline-plugin(access方法內(nèi)聯(lián))
- shrink-r-plugin(R文件瘦身和無用資源檢查)
- closeable-check-plugin(文件流的close檢查)
- const-inline-plugin(常量內(nèi)聯(lián))
- field-assign-opt-plugin(優(yōu)化多余賦值指令)
- getter-setter-inline-plugin?(getter和setter方法內(nèi)聯(lián))
-
method-call-opt-plugin(干凈地刪除某些方法調(diào)用,如
Log.d
) - coverage-plugin(線上代碼覆蓋率)
- refer-check-plugin(檢查是否有調(diào)用不存在的方法和引用不存在的字段)
- serialization-check-plugin(序列化檢查)
- SourceFileKiller(刪除SourceFile和行號屬性,作為示例)
- ButterKnifeChecker(檢測跨module使用ButterKnife可能導致的問題)
- RFileKnife(修復R.java太大編譯報code too large的問題)
?
- KICAD插件使用說明書 8次下載
- TYPE C24PIN雙排插件原理圖 30次下載
- 12*12插件觸控開關(guān)原理圖 4次下載
- 6*6紅柄插件觸控開關(guān)原理圖 7次下載
- 4.5*4.5插件觸控開關(guān)原理圖 9次下載
- 插件開發(fā)之VSCode
- keil 5代碼整理插件安裝教程
- 16位CRC驗證碼生成VI工具下載 55次下載
- 如何利用基于字節(jié)碼插樁實現(xiàn)的多線程調(diào)試工具 13次下載
- 51單片機中匯編多字節(jié)24位二進制轉(zhuǎn)BCD碼的實例說明
- Unity3D插件——LitJson下載 0次下載
- VC6.0代碼補全插件 9次下載
- 智能儀表多字節(jié)二進制數(shù)轉(zhuǎn)換BCD碼 54次下載
- AN586:將Jam STAPL和Jam STAPL字節(jié)碼播放器移植到嵌入 27次下載
- 基于數(shù)據(jù)流的Java字節(jié)碼分析
- 使用MCUXpresso for VS Code插件開發(fā)Zephyr的hello world 558次閱讀
- VSCode插件的安裝和使用 239次閱讀
- 教你如何開發(fā)VS Code插件? 1394次閱讀
- Rust構(gòu)建QEMU插件的框架 934次閱讀
- CheckStyle插件導入代碼規(guī)范 1094次閱讀
- SpringBoot中MybatisX插件的簡單使用教程 1327次閱讀
- 使用platformio平臺和Arduino框架開發(fā)STM32G0 3919次閱讀
- 使用匯編語言實現(xiàn)多字節(jié)BCD碼加法減法的詳細介紹 8726次閱讀
- 干貨:如何構(gòu)建一個JavaScript插件系統(tǒng)(附源碼) 3094次閱讀
- 立功科技嵌入式平臺“軟”實力——二維碼算法篇 1599次閱讀
- 關(guān)于嵌入式系統(tǒng)可視化集成開發(fā)平臺的詳細剖析 1970次閱讀
- 如何利用單片機向PC發(fā)送一個字節(jié)數(shù)據(jù) 8059次閱讀
- vscode常用插件有哪些 2w次閱讀
- jquery插件開發(fā)實例(MSBar2D圖效果、手風琴特效插件) 2067次閱讀
- jquery插件寫法及用法(jQuery插件開發(fā)全解析) 1w次閱讀
下載排行
本周
- 1NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊
- 0.40 MB | 4次下載 | 2 積分
- 2光伏并網(wǎng)逆變器原理
- 7.31 MB | 3次下載 | 2 積分
- 3T20電烙鐵原理圖資料
- 0.27 MB | 2次下載 | 免費
- 4PL83081 雙路恒流同步降壓轉(zhuǎn)換器技術(shù)手冊
- 3.34 MB | 1次下載 | 免費
- 5PL88052 4.8V至60V輸入,5A,同步降壓轉(zhuǎn)換器技術(shù)手冊
- 3.36 MB | 1次下載 | 免費
- 6LX8201微孔霧化驅(qū)動芯片電路圖資料
- 0.15 MB | 1次下載 | 免費
- 7PC6200_7V直流電機驅(qū)動器技術(shù)手冊
- 0.47 MB | 次下載 | 免費
- 8恒溫晶體振蕩器(OCXO)FOC-2D:20.6×20.6mm在通信基站和測試設備中的應用參數(shù)規(guī)格
- 485.75 KB | 次下載 | 免費
本月
- 1如何看懂電子電路圖
- 12.88 MB | 329次下載 | 免費
- 2RK3588數(shù)據(jù)手冊
- 2.24 MB | 14次下載 | 免費
- 3PC5502負載均流控制電路數(shù)據(jù)手冊
- 1.63 MB | 12次下載 | 免費
- 4STM32F10x參考手冊資料
- 13.64 MB | 12次下載 | 1 積分
- 5OAH0428 V1.0英文規(guī)格書
- 5.86 MB | 8次下載 | 免費
- 6NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊
- 0.40 MB | 4次下載 | 2 積分
- 7PID控制算法學習筆記資料
- 3.43 MB | 3次下載 | 2 積分
- 8光伏并網(wǎng)逆變器原理
- 7.31 MB | 3次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935132次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191415次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183349次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81599次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65990次下載 | 10 積分
評論