Android组件化插件化
文章平均质量分 79
组件化插件化学习
沙漠一只雕得儿得儿
沙漠一只雕,白月光与朱砂痣
展开
-
ARouter原理解析
一、ARouter概述用简单一两句话总结出来:ARouter通过Apt技术,生成保存路径(路由path)和被注解(@Router)的组件类的映射关系的类,利用这些保存了映射关系的类,Arouter根据用户的请求postcard(明信片)寻找到要跳转的目标地址(class),使用Intent跳转。原理很简单,可以看出来,该框架的核心是利用apt生成的映射关系。使用时,在每个需要对其他module提供调用的Activity中,都要声明类似下面@Route注解,我们称之为路由地址。@Route(pa转载 2020-08-09 15:54:52 · 6651 阅读 · 1 评论 -
Android平台页面路由框架ARouter原理
本次分享将主要围绕以下几个方面:一、为什么需要路由框架二、ARouter的技术方案三、使用ARouter的最佳实践四、未来开发计划一、为什么需要路由框架原生的路由方案存在的问题首先谈一谈原生的路由方案存在的问题以及为什么需要路由框架。我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的,而在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。而且一般而言配置规则都是在Manifest转载 2020-08-09 11:34:39 · 2727 阅读 · 0 评论 -
ARouter使用
简介ARouter 是阿里开源的,可以看成是 Android 平台中对页面、服务提供路由功能的中间件。ARouter 直接翻译过来就是路由,可以用来映射页面关系,实现跳转相关的功能。在 Android 中,常被用来进行组件化通讯。为什么要使用 ARouter我们知道 Android 中默认为我们提供了跳转的功能,比如 startActivity,startService 等。那为什...原创 2019-12-24 20:59:03 · 770 阅读 · 0 评论 -
Android插件编写入门
Gradle Plugin本质就是把独立的和业务代码无关的,各个项目、子项目通用的逻辑抽离出来进行封装。今天我们从零开始,从最简单的Demo逐渐深入,来演示下gradle的插件如何编写。入门Demo:最简单的plugin之打印Hello World首先我们写一个最简单的Android gradle plugin,就在我们APP module,主module的gradle文件里写一个打印...原创 2020-02-09 09:56:06 · 751 阅读 · 0 评论 -
Android组件化系列之手写组件路由架构篇(下)
上一篇对整个框架结构进行了简单的介绍,本篇将较为细致的介绍下实现细节。一、router_annotation模块主要有两个注解Route和Extra,以一个RouteMeta类;Route注解用来声明路由路径,路径至少是两级,目的是为了将不同module的跳转路径分到不同的路由分组中://元注解@Target({ElementType.TYPE})@Retention(Ret...原创 2020-01-12 18:06:51 · 2037 阅读 · 0 评论 -
Android组件化系列之手写组件路由架构篇(上)
该框架仿照Arouter实现的,目的是学习Arouter框架。框架的实现主要包括router_core、router_annotation和router_compiler三个部分。router_core:核心api,用来实现路由模块的跳转功能; router_annotation:自定义注解,用来声明需要路由的页面; router_compiler:处理注解,在编译时根据自定义注解生成...原创 2020-01-12 17:47:56 · 640 阅读 · 0 评论 -
Android 组件通信简述
总所周知,Android提供了很多不同的信息的传递方式,比如在四大组件中本地广播、进程间的AIDL、匿名间的内存共享、Intent Bundle传递等等,那么在这么多传递方式,哪种类型是比较适合组件与组件直接的传递呢。 本地广播,也就是LoacalBroadcastRecevier。更多是用在同一个应用内的不同系统规定的组件进行通信,好处在于:发送的广播只会在自己的APP内传播,不会泄漏给...原创 2020-01-07 16:04:20 · 2052 阅读 · 0 评论 -
Android组件化系列之动态注解手写注解、注解处理器、及注解工作流程
前言相对于上一节的编译时注解,运行时注解的书写要简单很多,基本思路就是写一个注解标记,通过getAnnotation拿到该类的注解标签做一些我们想要做的事情。一:注解标签@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD, ElementType.TYPE})public @interface BindId ...原创 2020-01-07 15:14:48 · 922 阅读 · 0 评论 -
AutoService注解无法生成META-INF文件
背景在写注解处理器时,首先就是要继承AbstractProcessor,并且按照如下步骤声明: 需要在 processors 库的 main 目录下新建 resources 资源文件夹; 在 resources文件夹下建立 META-INF/services 目录文件夹; 在 META-INF/services 目录文件夹下创建 javax.annotation.p...原创 2020-01-07 14:02:57 · 8250 阅读 · 0 评论 -
Android组件化系列之编译期注解手写注解、注解处理器、及注解工作流程
前言为了熟悉组件化通信内部的实现原理,最终完成手写组件化通信,今天我们就需要了解注解、注解处理器他们是如何工作的,因为组件化通信就是利用注解和注解处理器帮助我们完成路由表、路由信息等代码的生成工作。简单说,注解就是一个标记,用来告诉注解处理器凡是用我这个注解标记过的类/属性/方法,这些地方是需要你来帮我做一些事情的,例如生成一些代码。举个通俗的例子,例如流水线上有一些残次品的手机,这时我可以给...原创 2020-01-06 23:03:25 · 1047 阅读 · 0 评论 -
Android组件化系列之module和application相互切换配置
问题开发时经常是多人协同开发,每个人负责不同的功能,首先由项目主负责人搭建项目框架,之后每个人通过 git 下载项目,然后就开始开发各自的功能。有些独立的功能模块自成一个 module,比如相机相册、二维码等等,这样可以提高工程的复用性,不同module需要使用你的模块直接跳转过来即可。虽然抽出来一个独立的module,但是如何把这个module变成一个独立的application更加方便我们...原创 2020-01-05 17:04:02 · 3987 阅读 · 0 评论 -
Android组件化之子模块之间通信方案
1 背景Android开发中你的模块(Module)一般只有一个app主模块,随着功能不断扩展你会发现一个模块的缺点就是各种业务高度耦合,你就想测试登录模块,那么你可能会把支付模块也编译进去了,代价就是编译耗时,降低效率。大牛就提出了组件化开发的概念,假如一个App包括登录,选购,支付三个模块,那么就分成三个app,一个用来做登录,一个用来展示商品让用户选购,一个用来做支付,这样互相不影响...原创 2019-12-25 18:04:07 · 4953 阅读 · 0 评论