Repository navigation
Releases: leavesczy/Track
Releases · leavesczy/Track
Release list
v2.0.0
相对 1.1.7 的破坏性升级
接入说明:Wiki
环境
运行 Gradle 的 JDK 需 21
能力调整
| 1.1.7 | 2.0.0 |
|---|---|
viewClickTrack / composeClickTrack |
保留,参数改名 |
replaceClassTrack |
superclassTrack(多规则) |
replaceFieldTrack / replaceMethodTrack |
memberTrack(fields / methods) |
toastTrack / optimizedThreadTrack |
删除,改用 memberTrack |
不再提供 isEnabled:不写对应 DSL 就不插桩;写了但不完整会直接失败
include / exclude:viewClickTrack 配在 extension 上;SuperclassRule / MemberMethodRule / MemberFieldRule 按条配置;composeClickTrack 不支持
参数改名
- View:
onClickClass→clickHandlerClass,onClickMethodName→clickMethodName,uncheckViewOnClickAnnotation→skipOnClickAnnotation - Compose:
onClickClass→clickWrapperClass,onClickWhiteList→skipOnClickLabel(空字符串表示不做 label 豁免) - 替换规则:
owner/name/descriptor/proxyOwner→ownerClass/methodName|fieldName/methodDescriptor|typeDescriptor/proxyClass - 匹配全部重载或类型:以前可用空 descriptor,现在必须写
"*"
新 DSL
import github.leavesczy.track.member.MemberFieldRule
import github.leavesczy.track.member.MemberMethodRule
import github.leavesczy.track.superclass.SuperclassRule
viewClickTrack {
clickHandlerClass = "your.pkg.ViewClickHandler"
clickMethodName = "shouldHandleClick"
skipOnClickAnnotation = "your.pkg.SkipViewOnClick"
}
composeClickTrack {
clickWrapperClass = "your.pkg.ComposeClickWrapper"
skipOnClickLabel = "skip"
}
superclassTrack {
rules = setOf(
SuperclassRule(
originClass = "android.widget.ImageView",
targetClass = "your.pkg.MonitorImageView"
)
)
}
memberTrack {
methods = setOf(
MemberMethodRule(
ownerClass = "android.widget.Toast",
methodName = "show",
methodDescriptor = "()V",
proxyClass = "your.pkg.ToastProxy"
),
MemberMethodRule(
ownerClass = "java.util.concurrent.Executors",
methodName = "newFixedThreadPool",
methodDescriptor = "*",
proxyClass = "your.pkg.OptimizedExecutors"
)
)
fields = setOf(
MemberFieldRule(
ownerClass = "android.os.Build",
fieldName = "BRAND",
typeDescriptor = "Ljava/lang/String;",
proxyClass = "your.pkg.SystemFieldProxy"
)
)
}