V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Registering
V2EX  ›  问与答

一个关于 Android 的字节码处理插件,向大家讨点意见

  •  
  •   Registering · 2018-10-14 01:10:14 +08:00 · 854 次点击
    这是一个创建于 1992 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前阵子,我去 OKhttp 的 GitHub 主页下,向它们提一个 issue,希望支持全局的 Interceptor/EventListener,目前只能挨个 OkHttpClient 去设置,很不方便,而且部分漏网之鱼在第三方依赖库里。从大佬的回复看来,暂时是不支持的。

    于是自己折腾了一个爆破方案,从字节码下手,在 OkhttpClient 的 Builder()里,插入两三行代码,让它获取我在某处预埋好的 Interceptor/EventListener,这样一来,就能设置全局 Interceptor/EventListener 了。

    这个工具做完之后,发现编译插件的拖长了项目编译时间,于是又做了很多优化,使编译过程支持增量和并发处理,编译速度也不成问题了

    然后过程中又处理了 ASM 各种各样的问题,所以做了一些封装,使得编写一个插件只需要关注如何写 ClassWriter 即可,,

    所以就把这个东西抽出了一个小框架,在这个小框架上我又很快速开发了几个小插件。 由于还没写完文档,所以还没宣传这个项目

    但是昨晚在 OKhttp 的 issue 下提了我的这个解决方案,一早醒来突然看到 OKhttp 作者之一,Jesse Wilson ,star 了我,成了项目第一个 star,,,然后大佬的流量导致有其他小部分也注意到了,所以又多了几个 star。

    今天做了点小修补,感觉这个项目也写得差不多了,所以差不多准备发布了,大家有什么建议,或者希望通过修改字节码实现什么增强功能、监控功能,也可以给我 review 一下代码,看看 readme 有没有写得哪里不清楚

    感觉通过修改字节码,什么流量监控,UI 监控都可以好容易,,,,

    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3046 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:54 · PVG 22:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.