开源框架
文章平均质量分 96
Android 开源框架相关
tmacfrank
这个作者很懒,什么都没留下…
展开
-
手写简易版 Retrofit
这里只实现最基本的使用,适配器和转换器等并未实现。基本使用方法分两步,先定义 Api 接口:分别使用 POST 和 GET 请求去获取天气数据,这里使用的是高德地图的 API。接下来创建 Retrofit 对象,获取 Api 实例,用异步方式执行 Api 中的请求:二、手写代码写代码之前至少要清楚 Retrofit 其实是因为封装了 OkHttp 才拥有网络访问能力的,实际执行网络请求的是 OkHttp。Retrofit 要做的是为网络请求接口生成动态代理对象,并在请求方法被调用时,在动态代理的 In原创 2023-11-26 19:35:43 · 391 阅读 · 0 评论 -
Retrofit 源码分析
一、简介Retrofit 是一个基于并封装了 OkHttp 的 RESTful 网络请求框架,网络请求工作本质上由 OkHttp 完成,而 Retrofit 仅负责网络请求接口的封装。它使用注解配置网络请求参数,且框架内部使用了大量的设计模式,不仅简化了使用,也降低了模块间的耦合,提高了扩展性,支持 RxJava 框架和 Gson、Protobuf 等序列化格式,是一款功能十分强大的开源框架。使用 Retrofit 框架进行网络请求的过程为:请求过程:在应用内通过 Retrofit 发起一个网络请原创 2023-10-19 22:19:12 · 120 阅读 · 0 评论 -
Android Studio 插件开发入门
Android Studio 中有很多可以提升我们工作效率的插件,比如 AndroidButterKnife Zelezny、GsonFormat、AndroidCode Generator 等等,好的插件可以通过 UI 交互降低用户学习成本、提升使用体验。那如何自己开发一款 AS 插件呢?本篇文章会通过两个实例介绍一些 AS 插件开发入门级别的知识,希望能有所帮助。...原创 2022-08-15 17:17:20 · 1755 阅读 · 0 评论 -
OkHttp(二)—— 拦截器
本篇文章我们将介绍 OkHttp 的拦截器,拦截器是 OkHttp 的核心,正是因为 OkHttp 内置的五大拦截器各司其职,才使得使用者可以轻松的发送网络请求并收到响应。这五大拦截器分别是:这些拦截器是通过责任链串联起来的。所以我们先来看看 OkHttp 是如何应用责任链的。在上一篇讲分发器时我们能看到,RealCall 不论是被同步执行,还是被异步执行,都调用到了一个使用责任链的方法 getResponseWithInterceptorChain(),该方法会将所有的拦截器都添加到 intercepto原创 2022-07-12 20:04:55 · 1653 阅读 · 0 评论 -
OkHttp(一)—— 整体流程与分发器
OkHttp 的简单使用与分发器的源码分析原创 2022-07-09 23:06:41 · 325 阅读 · 0 评论 -
ASM 字节码插桩入门
在 Android Studio 中看到的 class 文件是按照 class 文件的格式进行反编译后的形式。可以用 010 Editor 查看 class 文件的二进制数据,想要在 class 文件中插入代码,需要先用 IO 读取 class 文件内容至内存 -> 修改二进制的 byte 数据-> IO 写回到 class 文件。真正修改 class 文件不是去一个一个字节去修改,而是借助 ASM 框架,这样即便不熟悉 class 文件格式也可以操作字节码文件。字节码插桩可以借助 ASM原创 2022-06-11 23:48:05 · 2112 阅读 · 0 评论 -
Android 热修复
混淆后的映射文件,路径:/module/build/outputs/mapping/debug/mapping.txt一、热修复原理热修复是指,在应用上线后出现 bug 需要及时修复时,不用再发新的安装包,只需要发布补丁包,在客户无感知下修复掉 bug。补丁包需要由开发者生成,由服务器管理并下发补丁包到用户的设备上执行热修复。热修复解决方案对比(图片来源 Tinker GitHub):通过类替换实现的热修复方案都不是即时生效的,需要重启应用后才能生效,而非类替换的方案可以做到即时生效,但实现方式有原创 2022-06-11 23:46:19 · 3712 阅读 · 0 评论 -
插件化基础(三)——启动插件组件
占位式插件化顾名思义,是需要通过宿主中“占位”的组件去启动插件的,这个占位的组件被称为代理。由于插件中的四大组件没有 Context 等运行环境,所以不能直接被宿主加载运行,只能借助代理实现。除了代理之外,还有一个重要角色,就是接口,这个接口有两个任务:将宿主的环境传递给插件协助宿主管理插件中各个组件的生命周期下面来看看具体如何实现吧。一、加载插件的类和资源插件化有两个重要的问题需要解决:如何加载插件中的类和资源如何启动插件中的四大组件插装——静态广播1.静态广播何时注册?开机原创 2022-05-12 04:11:35 · 1024 阅读 · 0 评论 -
插件化基础(二)——加载插件资源
占位式插件化也称为插桩,由于插件中的四大组件没有 Context 等运行环境,所以不能被宿主直接加载运行,需要由宿主中的代理去启动组件,这个代理就是“占位”的由来了。除了代理之外,还有一个重要角色,就是接口,这个接口有两个任务:将宿主的环境传递给插件协助宿主管理插件中各个组件的生命周期下面来看看具体如何实现吧。一、加载插件的类和资源插件化有两个重要的问题需要解决:如何加载插件中的类和资源如何启动插件中的四大组件...原创 2022-05-12 03:54:32 · 1134 阅读 · 0 评论 -
插件化基础(一)——加载插件的类
插件化技术最初源于免安装运行 apk 的想法,免安装的 apk 我们称之为插件,支持插件的 app 我们称之为宿主。插件化解决的问题:APP的功能模块越来越多,体积越来越大模块之间的耦合度高,协同开发沟通成本越来越大方法数目可能超过65535,APP占用的内存过大应用之间的互相调用组件化与插件化的区别:组件化开发就是将一个 app 分成多个模块,每个模块都是一个组件,开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件统一合并成一个 apk,这就是原创 2022-05-12 03:40:31 · 1279 阅读 · 0 评论 -
Android 组件化基础(二)—— 仿 ARouter 实现一个路由框架
本篇文章还是从理解 ARouter 的架构思想和实现细节的角度出发,仿照 ARouter 实现一个简单的路由框架,能力有限,就仅实现三个基本功能:路由扫描、建立路由表。通过路由跳转到目标页面。通过路由调用其它模块对外暴露的服务。拦截器等功能暂不打算实现。一、总体规划...原创 2022-04-10 01:08:32 · 707 阅读 · 0 评论 -
Android 组件化基础(一)—— 概述与基本配置
一、概述1.1 组件化的意义组件化是大型 app 的标配,它可以帮助解决项目开发过程中可能会遇到的一些问题,如:代码耦合:项目增大后易失去层次感,容易出现不同业务间的代码互相调用,高度耦合。组件化则可以实现各模块间不相互依赖,但可以互相交互、任意组合,高度解耦。编译时间长:项目代码越多编译时间越长。而组件化可以分模块打包进行编译测试。代码复用率低:不同业务间可能会出现重复的基础代码,但是并没有被抽离出来进行复用。组件化可以将基础组件或功能抽离出来进行复用(到新项目)。团队开发效率低:多人协作开原创 2022-04-10 00:47:04 · 1000 阅读 · 0 评论