項目中埋點的位置越來越多,就想着搞下無埋點數據統計。
調研了一圈,基本上確定,日誌收集+插樁。
新起個項目,日誌收集竟然又用到了我剛畢業第一年做的項目。
把裏面日誌收集的類修修補補挪過來,調試成功,打個jar包扔項目裏。
至於日誌的緩存也是現成的,隨用隨拿。
下面就是插樁模塊,原理基本上就是在編譯期,利用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類構造方法裏去了嗎,各種全匹配類名,增刪瞎改都不行,就是死都卡在這。
最後在 心木 小夥伴的旁敲側引下,輸入命令./gradlew build --stacktrace
運行後直接把報錯位置給定位到了。
氣死我了 少打了後面的Dir導致new File()報錯
copy一時爽,手殘死半年。