0%

前言

使用 Gradle Transform + ASM 实现代码插桩的使用已经非常普遍。本文试图探索如何更加快速简洁的利用 Transform 实现代码插桩,并尝试实现

  • 通过注解对任意类当中所有的方法实现计算方法耗时的插桩
  • 通过配置实现对任意类(主要是针对第三方库)当中指定方法的实现计算方法耗时的插桩
  • 对工程中所有的点击事件进行插桩,方便埋点或确定代码位置
  • ……
阅读全文 »

凡事预则立不预则废


阅读全文 »

前言

ASM 可以做什么

ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

阅读全文 »

前言

通过本文了解一下从 Java 文件生成可执行的 jar 文件的过程。有时候我们在使用第三方 SDK 的时候,如果其内部实现有 bug 或接口定义不够灵活时会一时间束手无策。我们了解了 jar 文件的实现机制,就可以对 SDK 进行二次加工。 在不做破坏性改动的前提下,给自己的开发工作带来遍历。

阅读全文 »

Unit Test

Start

简单了解一下,如何依赖 Junit 进行 Java 代码的单元测试。依旧如何借助 Robolectric 进行 Android 方面的单元测试,主要是 Context 的获取。最后就网络请求的单元测试,简单叙述一下。

阅读全文 »

前言

对比一下 java 和 kotlin 编译源码文件(source.java 或 source.kt) 到 class 的区别。这种区别产生的结果是什么,看看其中的优缺点。

阅读全文 »

前言

ARouter 使用已久,在组件化中非常有用,既解决了页面跳转的问题,同时还解决了同等级组件之间的依赖问题。这里结合源码分析一下其核心实现逻辑,本节主要分析其 API 的实现。同时结合之前一个简单的路由 中我们对路由的思考来看看 ARouter 是怎么做的。

阅读全文 »

前言

经常在网上看到一些有意思的 GIF 图,有些 GIF 图倒放之后,甚至变得更有意思,简直是每日的快乐源泉;

比如下面这个

正放的时候很搞笑,很悲催;倒放的时候居然很炫酷,简直比段誉的凌波微步还牛逼,有没有一种盖世神功已练成的感觉 😎😎😎😎😎,是不是可以和绿巨人一战 😀😀。

阅读全文 »