android组件化怎么调试组件,Android彻底组件化方案实践

.....

resourcePrefix "readerbook_"

sourceSets {

main {

if (isRunAlone.toBoolean()) {

manifest.srcFile 'src/main/runalone/AndroidManifest.xml'

java.srcDirs = ['src/main/java','src/main/runalone/java']

res.srcDirs = ['src/main/res','src/main/runalone/res']

} else{

manifest.srcFile 'src/main/AndroidManifest.xml'

}

}

}

经由过程这些额外的代码,我们给组件搭建了一个测试 Host,大年夜而让组件的代码运行在个中,所以我们可以再优化一下我们膳绫擎的框架图。

3f0010feeb4755b1c784e1e78d7f90b2.png

这种拆分都是比较轻易做到的,大年夜图上看,读书、分享等都已经拆分组件,并合营依附于公共的依附库(简单起见只画了一个),然后这些组件都被主项目所引用。读书、分享等组件之间没有直接的接洽,我们可以认为已经做到了组件之间的解耦。然则这个图有几个问题须要指出:大年夜膳绫擎的图中,我们似乎可以认为组件只有集成到主项目才可以应用,而实际上我们的欲望是每个组件是个整体,可以自力运行和调试,那么若何做到零丁的调试呢?

主项目可以直接引用组件吗?也就是说我们可以直接应用 compile project(:reader) 这种方法来引用组件吗?如不雅是如许的话,那么主项目和组件之间的耦合就没有清除啊。我们膳绫瞧匠,组件是可以动态治理的,如不雅我们删掉落 reader(读书)这个组件,那么主项目就不克不及编译了啊,谈何动态治理呢?所以主项目对组件的直接引用是弗成以的,然则我们的读书组件最终是要打到 apk 琅绫擎,不仅代码要和并到 claases.dex 琅绫擎,资本也要经由 meage 操作归并到 apk 的资本琅绫擎,怎么避免这个抵触呢?

组件与组件之寄┞锋的没有互相引用或者交互吗?读书组件也会调用分享模块啊,而这在图中根本没有表现出来啊,那么组件与组件之间怎么交互呢?

支撑零丁调试的组件化

2.3 组件的数据传输

膳绫擎我们讲到,主项目和组件、组件与组件之间不克不及直接应用类的互相引用来进行数据交互。那么若何做到这个隔离呢?在这里我们采取接口 + 实现的构造。每个组件声明本身供给的办事 Service,这些 Service 都是一些抽象类或者接口,组件负责将这些 Service 实现并注册到一个同一的路由 Router 中去。如不雅要应用某个组件的功能,只须要向 Router 请求这个 Service 的实现,具体的实现细节我们全然不关怀,只要能返回我们须要的结不雅就可以了。这与 Binder 的 C/S 架构很相像。

因为我们组件之间的数据传递都是基于接口编程的,接口和实现是完全分别的,所以组件之间就可以做到解耦,我们可以对组件进行调换、删除等动态治理。这琅绫擎有几个小问题须要明白:

组件怎么裸露本身供给的办事呢?在项目中我们简单起见,专门建立了一个 componentservice 的依附库,琅绫擎定义了每个组件向外供给的 service 和一些公共 model。将所有组件的 service 整合在一路,是为了在拆分初期操作更为简单,后面须要改为主动化的方法来生成。这个依附库须要严格遵守开闭原则,以避免出现版本兼容等问题。

service 的具体实现是由所属组件注册到 Router 中的,那么是在什么时光注册的呢?这个就涉及到组件的加载等生命周期,我们在后面专门介绍。

一个很轻易犯的小缺点就是经由过程持久化的方法来传递数据,例如 file、sharedpreference 等方法,这个是须要避免的。

下面就是加上数据传输功能之后的架构图:

d8cb8e6930dd07773016a90ea13ea6de.png

2.4 组件之间的 UI 跳转

可以说 UI 的跳转也是组件供给的一种特别的办事,可以归属到膳绫擎的数据传递中去。不过一般 UI 的跳转我们会零丁处理,一般经由过程短链的方法来跳转到具体的 Activity。每个组件可以注册本身所能处理的短链的 schme 和 host,并定义传输数据的格局。然后注册到同一的 UIRouter 中,UIRouter 经由过程 schme 和 host 的匹配关系负责分发路由。

推荐阅读

在数据中间范畴,这意味着企业须要对硬件成本进行严格审核,而这促使很多收集企业袈溱采购办事器硬件时选择不太传统的办法;即他们设计大年夜部分硬件,再交由定制制造商临盆办事器。这则意>>>详细阅读

地址:http://www.17bianji.com/lsqh/36376.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值