資料介紹
軟件簡介
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雙排插件原理圖 30次下載
- 12*12插件觸控開關原理圖 4次下載
- 6*6紅柄插件觸控開關原理圖 7次下載
- 4.5*4.5插件觸控開關原理圖 9次下載
- 插件開發之VSCode
- keil 5代碼整理插件安裝教程
- 16位CRC驗證碼生成VI工具下載 55次下載
- 如何利用基于字節碼插樁實現的多線程調試工具 13次下載
- 51單片機中匯編多字節24位二進制轉BCD碼的實例說明
- Unity3D插件——LitJson下載 0次下載
- VC6.0代碼補全插件 9次下載
- 智能儀表多字節二進制數轉換BCD碼 54次下載
- AN586:將Jam STAPL和Jam STAPL字節碼播放器移植到嵌入 27次下載
- 基于數據流的Java字節碼分析
- 使用MCUXpresso for VS Code插件開發Zephyr的hello world 558次閱讀
- VSCode插件的安裝和使用 239次閱讀
- 教你如何開發VS Code插件? 1394次閱讀
- Rust構建QEMU插件的框架 934次閱讀
- CheckStyle插件導入代碼規范 1094次閱讀
- SpringBoot中MybatisX插件的簡單使用教程 1327次閱讀
- 使用platformio平臺和Arduino框架開發STM32G0 3919次閱讀
- 使用匯編語言實現多字節BCD碼加法減法的詳細介紹 8726次閱讀
- 干貨:如何構建一個JavaScript插件系統(附源碼) 3094次閱讀
- 立功科技嵌入式平臺“軟”實力——二維碼算法篇 1599次閱讀
- 關于嵌入式系統可視化集成開發平臺的詳細剖析 1970次閱讀
- 如何利用單片機向PC發送一個字節數據 8059次閱讀
- vscode常用插件有哪些 2w次閱讀
- jquery插件開發實例(MSBar2D圖效果、手風琴特效插件) 2067次閱讀
- 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次下載 | 免費
評論