資料介紹
軟件簡介
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雙排插件原理圖 41次下載
- 12*12插件觸控開關原理圖 4次下載
- 4.5*4.5插件觸控開關原理圖 9次下載
- 插件開發之VSCode
- keil 5代碼整理插件安裝教程
- 16位CRC驗證碼生成VI工具下載 57次下載
- 如何利用基于字節碼插樁實現的多線程調試工具 13次下載
- 51單片機中匯編多字節24位二進制轉BCD碼的實例說明
- Unity3D插件——LitJson下載 0次下載
- 視頻監控系統跨瀏覽器插件的研究與實現 5次下載
- VC6.0代碼補全插件 9次下載
- 智能儀表多字節二進制數轉換BCD碼 54次下載
- AN586:將Jam STAPL和Jam STAPL字節碼播放器移植到嵌入 27次下載
- 基于數據流的Java字節碼分析
- 所見即所得——Luban-Lite VS Code插件讓開發實現“命令行自由” 954次閱讀
- 支持二次開發的工業級二維碼掃碼讀頭選購指南 558次閱讀
- PREEvision插件使用場景介紹 1.1k次閱讀
- 使用MCUXpresso for VS Code插件開發Zephyr的hello world 1.8k次閱讀
- VSCode插件的安裝和使用 1.5k次閱讀
- 教你如何開發VS Code插件? 2.1k次閱讀
- CheckStyle插件導入代碼規范 1.7k次閱讀
- SpringBoot中MybatisX插件的簡單使用教程 2.1k次閱讀
- 使用platformio平臺和Arduino框架開發STM32G0 6.3k次閱讀
- 使用匯編語言實現多字節BCD碼加法減法的詳細介紹 9.4k次閱讀
- 立功科技嵌入式平臺“軟”實力——二維碼算法篇 2k次閱讀
- 關于嵌入式系統可視化集成開發平臺的詳細剖析 2.3k次閱讀
- vscode常用插件有哪些 2.2w次閱讀
- jquery插件開發實例(MSBar2D圖效果、手風琴特效插件) 2.3k次閱讀
- jquery插件寫法及用法(jQuery插件開發全解析) 1.1w次閱讀
下載排行
本周
- 1新一代網絡可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費
- 2冷柜-電氣控制系統講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數據手冊
- 2.33 MB | 次下載 | 免費
- 4MDD品牌三極管S9012數據手冊
- 2.62 MB | 次下載 | 免費
- 5LAT1218 如何選擇和設置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環繞擴音機 AVR-1507手冊
- 2.50 MB | 次下載 | 免費
- 8MS1000TA 超聲波測量模擬前端芯片技術手冊
- 0.60 MB | 次下載 | 免費
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費
- 2PC5502負載均流控制電路數據手冊
- 1.63 MB | 23次下載 | 免費
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測距通信定位模塊規格書
- 838.47 KB | 5次下載 | 免費
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協議電壓誘騙控制器IC技術手冊
- 1.81 MB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191439次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論