Android Library
EastWoodYang
这个作者很懒,什么都没留下…
展开
-
自动注入AutoInject:一个通用的代码注入(自动注册)基础库
在组件化的过程中,业务被划分到各自独立的模块,可能会面临以下几点问题:各业务模块生成的一些索引类需要注册至对应的组件中,比如EventBus索引类的注册,Router索引类的注册。另外,如果各业务模块对外提供的api接口的话,也需要注册api接口。需要为散落在各个模块中的一些组件提供初始化的时机,有些组件需要在主线程中初始化,有些组件为不阻塞主线程需要在非主线程中初始化。通常的处理方式是在主模块硬...原创 2018-06-20 15:30:17 · 1216 阅读 · 0 评论 -
Android 通用的组件自动注册、自动初始化解决方案
背景问题我们在组件化的过程,业务被拆分至独立的Module中,一些公用组件会在各个Module中通过APT生成一些需要被注册至组件中的信息类,比如EventBus生成的Index类。我们这边RN定制的Plugin是跟随各自module,需要被注册。还有,各Module对外提供的api接口的话,也需要被注册。另外,有些组件为某些Module特有,需要在App启动的时候就要初始化,有些需要在主...原创 2018-07-17 07:12:13 · 874 阅读 · 0 评论 -
Gradle Repo:一个能管理多个Git仓库,又能快速切换分支的Gradle插件
背景和问题项目组件化过程中,会根据App框架、业务情况划分出各个独立的模块。通常把各个模块的代码管理分开,各自有独立Git仓库。 这样有个好处是可以按需clone部分模块的代码,再组装成一个可运行的工程。比如,业务组的同学开发某个Feature的时候,只需clone业务层部分模块的代码,不需要中间层、基础层方面的模块代码(业务层模块引用中间层、基础层模块打包上传Maven的aar)。但在实际操作中...原创 2018-07-05 12:39:46 · 1903 阅读 · 2 评论 -
Android路由框架AnnoRouter:使用Java接口来定义路由跳转
介绍AnnoRouter是一个用于协助Android组件化的路由框架。它参考了Retrofit的接口设计,将路由跳转API转化为Java接口,使用注解来配置跳转信息。Usage初始化全局RouterRouter.Builder builder = new Router.Builder() .application(this) ...R...原创 2018-07-25 08:09:34 · 414 阅读 · 0 评论 -
Android模块接口服务,暴露接口+接口服务查找(类似微信.api)
MIS - 模块接口服务(Module Interface Service)模块A对外暴露SDK(接口+数据Model),在运行时,通过接口将对应的接口服务注册到服务容器中。模块B引用模块A对外暴露的SDK,通过SDK中的接口在服务容器中查找对应的接口服务并调用。基于上述,MIS需要解决的问题:模块如何对外暴露SDK如何通过接口查找对应的接口服务模块如何对外暴露SDK...原创 2018-07-31 09:30:15 · 2549 阅读 · 0 评论 -
Android模块化之MicroModule(微信Pins工程)
微信Pins工程相信你看过微信关于模块化的分享《微信Android模块化架构重构实践》,也注意到里面提到的pins工程结构。作者是这样描述的 ——“pins工程能在module之内再次构建完整的多子工程结构,通过project.properties来指定编译依赖关系。通过依赖关系在编译时找到所有的资源和源码路径。”仔细推敲这句话的意思,应该能知道它实现的基本原理——通过设置sour...原创 2018-07-28 11:50:04 · 2550 阅读 · 5 评论 -
借助Gradle Plugin解决模块化开发中模块如何对外暴露接口
直奔主题,在模块化开发中,模块间的数据交流大多数同学会采用以接口作为通信协议的方式。需要面对的问题有以下几点:接口由谁来维护?这个问题简单,由提供服务的模块来维护。接口怎么暴露?打成jar包,发布到maven。接口在哪里维护?现在可以参考的方案有三种:一. 所有相关模块的接口统一在一个模块中维护;二. 各个模块的接口分别在自建一个新的模块中维护,通过命名规则一一对应;三. ...原创 2018-11-30 19:58:43 · 437 阅读 · 0 评论