1. 程式人生 > >整合hibeaver的血淚史 -- Ambiguous method overloading for method java.io.File#<init>

整合hibeaver的血淚史 -- Ambiguous method overloading for method java.io.File#<init>

專案中埋點的位置越來越多,就想著搞下無埋點資料統計。

調研了一圈,基本上確定,日誌收集+插樁。

新起個專案,日誌收集他媽的竟然又用到了我剛畢業第一年做的專案。

把裡面日誌收集的類修修補補挪過來,除錯成功,打個jar包扔專案裡,可以完美實現bugly初始化,testJavaCrash()功能。

至於日誌的快取也是他媽的現成的,隨用隨拿。

下面就是插樁模組,原理基本上就是在編譯期,利用asm修改生成的class檔案。

asm完全沒了解,看了些介紹就是可以修改和增強既有類,訪問類裡的欄位和方法做修改。

插樁就是找到相應的方法在裡面新增我們的程式碼就可以了。

找了個現成的庫,

https://github.com/BryanSharp/hibeaver,整合簡單,可以除錯。

又考慮到安全,就決定自己去實現下,直接copy過來,自己修改多好啊。

修改成自己的moudle名後,生成jar,在app moudle下引用進來。build後一直報

 

java.io.File#<init>有歧義的方法Ambiguous method overloading for method java.io.File#<init>

WHAT FUCK ! ! !

這不就是插樁找方法找到File類構造方法裡去了嗎,各種全匹配類名,增刪瞎改都不行,就是死都卡在這。

給hibeaver作者發郵件,大神也不回我,可能百度最近很忙吧。

各種加埋點群,沒人吊我。

痛苦啊,一天天就這樣過去了。

最後終於在 心木 小夥伴的旁敲側引下,我敲了下./gradlew build --stacktrace

媽的,這個命令每次報錯都擺在我面前我從來都正眼看過

執行後直接把報錯位置給定位到了。

氣死我了 少打了後面的Dir導致new File()報錯

 copy一時爽,手殘死半年。