草庐IT

手写插件化

插件化技术也就是说用户只需安装宿主apk,其它业务模块打包成独立的插件apk动态下发,然后通过宿主app加载运行。其天然的就解决了部分包体积大小的问题,毕竟只需将核心业务模块打包到宿主app,随之附带的还有插件apk的热更新能力,通过网络可以随时下载更新插件apk,避免宿主APP的频繁发版。市面上的框架原理都差不多,构建插件apk路径的DexClassLoader,后续通过DexClassLoader加载插件类即可。普通类相对来说容易解决,加载即用。像四大组件比如Acitvity这种具有生命周期的组件则需要通过站桩方案转发生命周期,当然还有插件apk资源加载的问题。插件化是一个听起来很厉害、很

手把手教你手写一个 Vite Server(一)

之前写过几篇Vite的文章,对Vite的概念也有一定的理解了,但理解归理解,仍然觉得很虚,也不知怎么的,这几个概念突然就变成一个这么强大的工具。。。于是,我决定自己手写一遍Vite,这样才有实在感,而且为了往往要考虑兼容各种情况,源码往往会非常复杂,不利于理解。那么这时候,手写一遍,去掉这些兼容逻辑、边界判断等,只关注核心逻辑,就能进一步地加深理解。本文是这个系列的第一篇文章,在本篇文章中,我们先不关注Vite的架构,因为我们得先有个东西出来,对于很多人来说,空谈架构是不行的。因此,我们首先把Vite开发环境的部分功能模仿出来:实现ViteDevServer,并能够对请求的ts文件做编译。下篇

手把手教你手写一个 Vite Server(一)

之前写过几篇Vite的文章,对Vite的概念也有一定的理解了,但理解归理解,仍然觉得很虚,也不知怎么的,这几个概念突然就变成一个这么强大的工具。。。于是,我决定自己手写一遍Vite,这样才有实在感,而且为了往往要考虑兼容各种情况,源码往往会非常复杂,不利于理解。那么这时候,手写一遍,去掉这些兼容逻辑、边界判断等,只关注核心逻辑,就能进一步地加深理解。本文是这个系列的第一篇文章,在本篇文章中,我们先不关注Vite的架构,因为我们得先有个东西出来,对于很多人来说,空谈架构是不行的。因此,我们首先把Vite开发环境的部分功能模仿出来:实现ViteDevServer,并能够对请求的ts文件做编译。下篇

手写Dubbo SPI机制和源码解析

版本2.7.8SPI机制官方文档介绍如下SPI全称为ServiceProviderInterface,是一种服务发现机制。SPI的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过SPI机制为我们的程序提供拓展功能。说白了,SPI是一种第三方框架常用的扩展手段:第三方框架定义接口,使用者来写实现类,通过SPI机制框架运行时可以获取到这个实现类,通过反射创建对象,并使用这个对象来继续完成业务SPI机制所以通过SPI机制,第三方框架可以将某一段业务逻辑交由使用者自定义实现比如Dubbo的负载均衡

手写Dubbo SPI机制和源码解析

版本2.7.8SPI机制官方文档介绍如下SPI全称为ServiceProviderInterface,是一种服务发现机制。SPI的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过SPI机制为我们的程序提供拓展功能。说白了,SPI是一种第三方框架常用的扩展手段:第三方框架定义接口,使用者来写实现类,通过SPI机制框架运行时可以获取到这个实现类,通过反射创建对象,并使用这个对象来继续完成业务SPI机制所以通过SPI机制,第三方框架可以将某一段业务逻辑交由使用者自定义实现比如Dubbo的负载均衡

干掉RxJava系列--1. 手写权限请求替代RxPermission

起因最近在对公司项目做APK包体积优化,其中少不了对一些不必要的三方库的移除,在此过程中发现项目中居然有一系列的Rx相关库,RxJava,RxBus,RxPermission,于是心中起了一丝杀意。当然RxJava还是相当强大的,基于事件流的链式调用,进行耗时任务,线程切换,是一个很好的异步操作库,毕竟我上一个系列文章才写过探索Android开源框架-3.RxJava使用及源码解析,如果想更深入的了解RxJava的话可以看一下,不过随着现在kotlin的普及,其协程和Flow基本也可以替代RxJava,所以准备尝试移除RxJava及其相关的一系列库,毕竟还是可以减少不小的包体积的。那么先拿Rx

干掉RxJava系列--1. 手写权限请求替代RxPermission

起因最近在对公司项目做APK包体积优化,其中少不了对一些不必要的三方库的移除,在此过程中发现项目中居然有一系列的Rx相关库,RxJava,RxBus,RxPermission,于是心中起了一丝杀意。当然RxJava还是相当强大的,基于事件流的链式调用,进行耗时任务,线程切换,是一个很好的异步操作库,毕竟我上一个系列文章才写过探索Android开源框架-3.RxJava使用及源码解析,如果想更深入的了解RxJava的话可以看一下,不过随着现在kotlin的普及,其协程和Flow基本也可以替代RxJava,所以准备尝试移除RxJava及其相关的一系列库,毕竟还是可以减少不小的包体积的。那么先拿Rx