如何开发一款高性能的 gradle transform (mp.weixin.qq.com)

【简介】

对于java开发者来说,大家好像都比较喜欢在编译期间搞事儿,比如为了做到AOP编程,大家都喜欢利用字节码生成技术,常用的有无痕埋点,方法耗时统计等等。那么Android中具体是如何做到这些的呢?所谓字节码插桩技术,其实就是修改已经编译的class文件,往里面添加自己的字节码,然后打包的时候打包的是修改后的class文件。为了便捷的修改编译后的class文件,Google爸爸开发了一套gradle相关的库,也就是gradle-transform-api,利用这个工具,我们可以自己实现class文件修改,下面我们看看具体做法。

点击查看原文 >>

@code小生 2019-08-04 23:51 / 0个评论
赞过的人: @IT技术博客大学习 @技术头条 @code小生
要不要再学学下面的文章?
StarRocks 开发环境搭建踩坑指北 (crossoverjie.top)
本文详细介绍了在本地搭建 StarRocks 开发环境的步骤,包括启动前端(FE)和后端(BE)的配置及调试方法。通过本地启动 FE 并使用 Docker 运行 BE,实现了本地调试和测试。作者分享了常见问题解决方案,如端口冲突和网络配置问题,为 StarRocks 开发环境搭建提供了实用指南。
by @技术头条 2024-11-02 16:42 查看详情
基于 Docker 搭建开发环境(三):链路追踪 (www.diguage.com)
本文介绍了通过 Docker 配置 OpenTelemetry 和 Jaeger,实现分布式链路追踪。详细讲解了如何使用 OpenTelemetry Agent 和 Collector 配置尾部采样策略,识别慢请求和错误。结合 Prometheus 和 Grafana,构建全面的监控和追踪系统。提供了具体的 `docker-compose.yml` 配置文件示例,适合需要全链路可观测性的分布式应用开发环境。
by @技术头条 2024-11-02 16:34 查看详情
基于 Docker 搭建开发环境(二):EFK 日志套件 (www.diguage.com)
本文介绍了如何使用 Docker 和 EFK(Elasticsearch、Fluentd、Kibana)套件构建日志管理系统,通过 Fluentd 将 NACOS 和业务日志集中发送至 Elasticsearch,方便数据分析和故障排查。文章提供了 `docker-compose.yml` 配置文件示例,解决了插件安装、权限设置和健康检查等常见问题,为构建灵活高效的日志管理系统提供了实用方法。
by @技术头条 2024-11-02 16:33 查看详情
基于 Docker 搭建开发环境(一):数据库+监控 (www.diguage.com)
本文介绍了使用 Docker 构建开发环境的步骤,涵盖 MySQL 数据库配置、Nacos 服务发现与配置管理、Prometheus 监控及 Grafana 可视化。通过 Docker Compose 结构化配置,实现了多组件集成。文章提供了详细的 `docker-compose.yml` 文件示例,并探讨了自动接入监控、应用打包等优化方向,适用于需要集中管理多项开发工具的场景。
by @技术头条 2024-11-02 16:33 查看详情
浅谈 GUI 应用开发 (zgq.me)
本文深入探讨了 GUI 应用开发中的关键问题,从状态管理、生命周期到交互模式等多个角度分享了开发经验。无论你是前端开发者还是产品设计师,这篇文章都能为你在 GUI 开发中提供实用的见解和技巧。赶紧阅读,提升你的应用开发水平吧!
by @技术头条 2024-09-09 23:37 查看详情
四种字符串和bytes互相转换方式的性能比较 (colobu.com)
在 Go 中,字符串和字节数组的互转性能是很多开发者关注的问题。本文详细对比了四种转换方式,包括新型 unsafe 方法和 Kubernetes 实现,并通过 Benchmark 测试揭示了它们的性能差异。想要优化你的 Go 项目性能?不妨看看这篇详细的实测分析!
by @技术头条 2024-09-08 23:34 查看详情
USB 设备开发:从入门到实践指南(三) (paper.seebug.org)
本文深入研究了Nintendo手柄驱动在Linux系统中的实现细节,并解决了一些关于USB HID和input驱动的疑问。
by @技术头条 2024-08-06 08:27 查看详情
USB 设备开发:从入门到实践指南(二) (paper.seebug.org)
本文介绍了如何利用树莓派设备模拟USB鼠标和游戏手柄。文章从修改HID描述符开始,详细说明了如何通过调整bash脚本中的协议配置模拟不同的USB设备。在模拟鼠标时,作者修改了协议为鼠标,调整了HID描述符以支持鼠标的左右键、中键、滚轮等功能。接着,在模拟游戏手柄部分,作者通过设定正确的供应商和产品ID,使设备被识别为XBox 360手柄。文章还探讨了如何动态修改Ubuntu驱动来支持Switch手柄。

在研究过程中,作者分析了USB HID协议,使用eBPF和调试输出方式研究Linux内核驱动代码,探索了手柄的各种功能键和坐标轴的实现。此外,作者对Switch Pro手柄的驱动支持问题进行了深入分析,发现需要特定协议的支持,并提供了解决方案。
by @技术头条 2024-08-06 08:26 查看详情
USB 设备开发:从入门到实践指南(一) (paper.seebug.org)
这篇文章介绍了使用树莓派4B设备进行USB设备开发的经验。作者从研究工具、搭建开发环境、分析USB协议等多个角度详细描述了如何将树莓派模拟成一个USB键盘,并通过Wireshark捕获流量以研究和理解USB协议的工作原理。文章提供了具体的操作步骤和代码示例,并深入探讨了设备描述符、配置描述符、接口描述符、端点描述符等USB协议的关键组件。该文章为USB设备开发提供了实用的指导,适合对底层硬件开发感兴趣的开发者参考。
by @技术头条 2024-08-06 08:25 查看详情
“测试 Rust 的 I/O 性能” (colobu.com)
这篇文章探讨了在Linux上使用Rust进行文件I/O操作的性能测试。作者通过多种方法对读取大文件进行基准测试,包括使用标准BufReader、Direct I/O、内存映射(Mmap)以及io_uring等技术。结果显示,使用AVX-512指令集的内存映射实现是最快的方法,其读取速度超过8.4 GB/s。文章强调不同技术的性能差异,并提供代码示例供开发者参考。
by @技术头条 2024-08-06 07:51 查看详情