集成hibeaver的血泪史 -- Ambiguous method overloading for method java.io.File#

项目中埋点的位置越来越多,就想着搞下无埋点数据统计。

调研了一圈,基本上确定,日志收集+插桩。

新起个项目,日志收集竟然又用到了我刚毕业第一年做的项目。

把里面日志收集的类修修补补挪过来,调试成功,打个jar包扔项目里。

至于日志的缓存也是现成的,随用随拿。

下面就是插桩模块,原理基本上就是在编译期,利用asm修改原有的class文件。

asm完全没了解,看了些介绍就是可以修改和增强既有类,访问类里的字段和方法做修改。

插桩就是找到相应的方法在里面添加我们的代码就可以了。

找了个现成的库,https://github.com/BryanSharp/hibeaver,集成简单,可以调试。

又考虑到安全,就决定自己去实现下,直接copy过来,自己修改多好啊。

修改成自己的moudle名后,生成jar,在app moudle下引用进来。build后一直报

集成hibeaver的血泪史 -- Ambiguous method overloading for method java.io.File#_第1张图片集成hibeaver的血泪史 -- Ambiguous method overloading for method java.io.File#_第2张图片 

java.io.File#有歧义的方法Ambiguous method overloading for method java.io.File#

WHAT FUCK ! ! !

这不就是插桩找方法找到File类构造方法里去了吗,各种全匹配类名,增删瞎改都不行,就是死都卡在这。

最后在 心木 小伙伴的旁敲侧引下,输入命令./gradlew build --stacktrace

运行后直接把报错位置给定位到了。

集成hibeaver的血泪史 -- Ambiguous method overloading for method java.io.File#_第3张图片

气死我了 少打了后面的Dir导致new File()报错

 copy一时爽,手残死半年。

 

你可能感兴趣的:(集成hibeaver的血泪史 -- Ambiguous method overloading for method java.io.File#)