-
Notifications
You must be signed in to change notification settings - Fork 5
Home
leavesCZY edited this page Jul 31, 2023
·
15 revisions
Trace 是一个适用于 Android 的字节码插桩库
目前一共包含三个功能点:
- 应用双击防抖。包括 Android 原生的 View 体系以及目前流行的 Jetpack Compose
- 替换 Class 的继承关系。可用于非侵入式地实现监控大图加载的功能
- 修复 Toast 在 Android 7.1 上的系统 bug。用于解决在 Android 7.1 系统上 Toast 由于 WindowToken 失效从而导致应用崩溃的问题
相关联的文章:
在项目根目录下的 build.gradle
或者 build.gradle.kts
中引入插件
//grovy
plugins {
id "io.github.leavesczy.trace" version "latestVersion" apply false
}
//kts
plugins {
id("io.github.leavesczy.trace").version("latestVersion").apply(false)
}
在项目主模块下的 build.gradle
或者 build.gradle.kts
中应用插件,需要哪些功能点就为其设置对应的参数即可
//grovy
plugins {
id("io.github.leavesczy.trace")
}
clickTrace {
view.onClickClass = "x"
view.onClickMethodName = "x"
view.uncheckViewOnClickAnnotation = "x"
view.include = []
view.exclude = []
compose.onClickClass = "x"
compose.onClickWhiteList = "x"
}
replaceClassTrace {
originClass = "x"
targetClass = "x"
include = []
exclude = []
}
toastTrace {
toasterClass = "x"
showToastMethodName = "x"
}
//kts
plugins {
id("io.github.leavesczy.trace")
}
clickTrace {
view {
onClickClass = "x"
onClickMethodName = "x"
uncheckViewOnClickAnnotation = "x"
include = listOf()
exclude = listOf()
}
compose {
onClickClass = "x"
onClickWhiteList = "x"
}
}
replaceClassTrace {
originClass = "x"
targetClass = "x"
include = listOf()
exclude = listOf()
}
toastTrace {
toasterClass = "x"
showToastMethodName = "x"
}
- Trace 在 AGP 7.0+ 和 8.0+ 均已测试通过,更低版本的 AGP 则没有再特意进行试验
- Trace 目前处于刚起步阶段,可能还会存在一些 bug,但由于 Trace 是以 Gradle Plugin 的形式引入到项目中的,引入成本和移除成本都很低,有需要的话还是值得一试的
- Trace Plugin 也托管到了 GradlePluginPortal,可以在 Trace 查看