开发模式为module
===========
需要在现有的主项目里面新建module工程,每一个module工程就是一个业务组件。
module工程的开发模式:
main:作为项目的组建时使用;main里面的provider代表这个组件对外开放(组件间通信)的能力;每一个provider需要在ServiceManager里面进行声明并交由其管理;
debug:作为独立模块运行时使用,需要新建一个application和androidmanifest文件;
总的来说,以debug模式和release模式去区分,在debug模式下,各个业务线作为application可以单独运行,而在release模式下,则作为library,可以提供给主app进行依赖。
这样一来就可以做到每个业务线的平行开发,在Release模式下再合到一起,非常的灵活。
现有项目的app模块:
app模块是一个壳工程,主要负责app的配置(build.gradle、AndroidManifest.xml)、初始化(AppApplication)工作;
app模块的AppApplication需要通过ModuleOptions.ModuleBuilder(this)的addModule方法将各个组件的引用添加进来;
base-core组件
base-core组件需包含ARouter管理。
开放模式为公开
=======
一般此种模式下,是对外提供jar或aar包供其它主工程或库工程引用。
如果存在引用关系,比如A引用B,那么A可以直接调用B中的方法或页面,也就不存在ARouter来搭建桥梁;
开放模式为内部
=======
一般此种模式下,是在项目内部的module工程(此module工程也可以在外部独立新建一个项目来实现,但是必须使用主项目同样的路由架构比如ARouter);
module之间不存在引用关系,因此必须使用路由架构比如ARouter来实现。
关于ARouter
=========
不同的模块负责自己的业务实现,不和其他模块有依赖关系的存在,也就是模块之间没有直接的compile关系。
假如这个模块需要启动别的模块的Activity或者是调用别的模块的方法,我们就通过ARouter提供的方法去实现。
router的管理在base-core组件下的router文件夹内;
provider:各个组件定义的接口,包含对外提供的能力;
module:一般命名为xxService,是各个组件对外调用的服务入口;
ServiceManager:通过annotation实例化各个组件的provider并统一管理;通过ServiceManager对目标组件provider的调用,实现跨组件通信;
Android开发除了flutter还有什么是必须掌握的吗?
相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了
除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;
![](https://upload-images.jianshu.io/upload_images/14847428-0bca65c080c52621.png?imageMogr2/auto-orien
t/strip%7CimageView2/2/w/1240)
外链图片转存中…(img-84T1viJU-1716043033848)]
t/strip%7CimageView2/2/w/1240)