小萌新之前封装的公共库都是Library,So,接下来我要:
1. 配置下实现library与application自由切换配置
2. 新建一个启动页面,新建一个application模式下的manifest(AndroidDebugManifest.xml), 然后配置到AndroidDebugManifest.xml去
3.根据工程目录下统一配置的标识isLibrary(是否是Library)进行动态配置manifest
4. App主模块引用的时候也根据isLibrary标识的状态选择是否加载该组件(只有组件是Library的情况下才能被implementation)
走你,开始看连环画:
此时你只需要控制工程下的gradle.properties的isLibrary变量就可以实现模块的Library和Application的切换了
# true表示当前是个library,false则表示是个application
isLibrary = false
这个isLibrary也可以由模块自己内部定义控制,然后提交上去的时候打开这个开关就行,自己测试的时候关闭了就好。 不过由工程统一配置,那样可以防止你设置成Application,然后被主App给引用了导致一些错误....
小萌新发现一个问题,其实我用上面的公共的弹窗库作为组件化不太好,组件化应该是侧重业务的模块。我这个公共弹窗提供了具体的类给其他模块调用,如果此时我主模块isLibrary=false,就不会implementation该弹窗,那么我的代码就会报错!因为没有引入库,导致找不到相关类。
不然主模块很难运行起来呀....会缺少很多资源,找不到类呀....
而我们侧重业务的模块,则直接通信是需要一套接口或者路由等方式来实现,他们之间没有直接的依赖性,这样主模块随时可以剔除一些非必要的引用,运行也不会报错!暂时是这么了解的。。。
后续的话,还需要深入组件化的通信方式,实现页面跳转,回调通知等。。。总之事情还是有很多的....
明天下午请假,上午把通信这块瞅瞅试试。。。最后祝大家中秋,不对,是国庆快乐! 过了节日,洗心革面,重新做人,好好锻炼,早睡早起,坚持学习,么么哒!
乱记 - 针对之前重构的工程提交做了一下备注说明:
用Pop做组件化配置样例(实现Library和Application的切换配置);
但是由于Pop库的类被App主模块直接依赖了,只能作为配置参考,不能作为组件化模块;
组件化模块是一个独立的模块,可以被主模块依赖,但是也可以随时剔除,并且剔除了还影响主模块运行(不会报资源类等找不到)!
组件化倾向业务组件,比如登录,注册等可以独立提出来作为独立组件,组件通信方式则可以:下沉模块作为媒介、EventBus、广播、AIDL、接口等可以参考实现组件通信.....
附录:网上的知识可以参考,尽量多看官方吧...然后了网友写的不清楚,不明白的,我们争取自己搞明白些。
Android组件开发时Module的library与application自由切换配置