Android Tinker源码分析(三):加载dex补丁流程
本系列 Tinker 源码解析基于 Tinker v1.9.12
加载dex补丁流程
TinkerDexLoader.loadTinkerJars
判断一下 dexList 和 classLoader
1 | if (loadDexList.isEmpty() && classNDexInfo.isEmpty()) { |
Android Tinker源码分析(三):加载dex补丁流程
本系列 Tinker 源码解析基于 Tinker v1.9.12
判断一下 dexList 和 classLoader
1 | if (loadDexList.isEmpty() && classNDexInfo.isEmpty()) { |
本系列 Tinker 源码解析基于 Tinker v1.9.12
利用反射执行的是 TinkerLoader.tryLoad 方法
1 |
|
Android Tinker 源码分析(一):TinkerApplication
本系列 Tinker 源码解析基于 Tinker v1.9.12
接入 Tinker 第一步就是改造 Application 。官方推荐是利用 @DefaultLifeCycle 动态生成 Application
1 |
|
最近项目中有一个需求,需要对重复的点击事件作过滤处理。
可能第一个想到的方法是在 OnClickListener.onClick 中根据时间间隔来判断,这也是比较传统的方案。但是缺点同样也很明显,就是对现有代码的侵入性太强了。因为点击事件回调的代码我们早已写好了,现在再去改动会很痛苦,并且改动的范围也很广。
那么有没有一种方法是不需要改动源代码,就可以实现对点击事件去重的呢?当然有,我们可以利用 AOP 来实现一套方案。接下来就来讲讲这套方案就具体实现。
在写代码之前,需要先设置 AOP 的配置,AOP 一般采用的是 AspectJ 。而在 Android 中一般直接使用 hugo 或者 gradle_plugin_android_aspectjx 插件,这样就省去了配置 AspectJ 的麻烦。在这里我使用的就是 gradle_plugin_android_aspectjx 插件,gradle_plugin_android_aspectjx 具体的配置就不详细展开了,可以自行去了解。
Android 使用 OpenCV 对图片进行二值化和去燥处理
最近做的项目中有使用到 OpenCV ,并且利用了 OpenCV 对图片做一些简单的处理。所以今天打算记录一下一些常用的 OpenCV 操作。
以下的 OpenCV 代码都是基于 OpenCV v3.3.0 aar 版本
所谓的二值化,就是将图片上的像素点的灰度值设置为0或255,也就是将整个图片呈现出明显的只有黑和白的视觉效果。
1 | public static Bitmap binarization(Bitmap bitmap) { |
arouter-gradle-plugin version : 1.0.2
AutoRegister : https://github.com/luckybilly/AutoRegister
在本系列的第一篇中讲过,ARouter 可以通过扫描 dex 文件中 class 的全类名,来加载 compiler 生成的路由类。但这种方式影响性能,并且效率也不高。所以在 ARouter v1.3.0 之后的版本中,加入了自动注册的方式进行路由表的加载,自动注册可以缩短初始化时间,解决应用加固导致无法直接访问 dex 文件从而初始化失败的问题。
arouter-compiler version : 1.2.2
之前对 arouter-api 做了整个流程的分析,今天来看看 arouter-compiler 。
arouter-compiler 主要是利用 apt 在编译期自动生成代码的。之前我们看到的 ARouter$$Root$$app
、 ARouter$$Group$$test
和 Test1Activity$$ARouter$$Autowired
等都是 arouter-compiler 生成的。
arouter-api version : 1.4.1
到现在为止,ARouter 还有最后的依赖注入还没有解析过,那么今天就来深入探究一下其实现原理。
PS : 因为依赖注入的原理还比较简单,所以本篇篇幅会较短。
想要用 ARouter 实现依赖注入,需要在 Activity/Fragment 中加上
前几天对 ARouter 的页面跳转源码进行了分析,趁着今天有空,就讲讲 ARouter 里面的拦截器吧。
把视线转移回 ARouter 的 init 方法
1 | public static void init(Application application) { |
之前对 ActivityRouter 的源码做了一次分析,相信大家对路由框架已经有一个大概的理解了。
而今天给大家分析一下 ARouter 。大家在项目组件化的过程中,可能绝大多数的开发者都会使用 ARouter 来作为项目的路由框架。毕竟 ARouter 是阿里出品,优点自然不必多说了。
所以在平常使用的过程中,不仅仅要做到会用,还要深入了解一下 ARouter 的内部原理。
本次 ARouter 的解析分为三部分: