组件化框架坑
先上链接
https://github.com/yyyangwenhao/EmptyModule.git
欢迎讨论
1层级结构
1.1壳app
Application
AndroidManifest.xml是我们Android应用的根表单。应用的名称、图标以及是否支持备份等等属性都是在这份表单中配置的,其他组件中的表单最终在集成开发模式下都被合并到这份 AndroidManifest.xml 中。
build.gradle中如果是集成模式,则引入需要的module。
baselib中引入 api 'com.alibaba:arouter-api:1.3.1',其他子模块就不用引入了,module_baselib提供给子模块依赖得工具包
每个子业务模块下都得引入annotationProcessor 'com.alibaba:arouter-compiler:1.1.4' ,否则无法根据@Route生成对应class,找不到路径
module_main、module_1、module_2等子模块都依赖baselib开发。
每个子模块的包名不能重复了。每个子模块中需要指定aroute得modulename
全局降级策略和重定向各自都只能有一个,并且也需要用@Route(path=“/xx/xx”)标识
path路径必须是“/**/**”两级以上层级
组件之间AndroidManifest合并问题
组件之间资源名冲突
比如module1和module2中都有一个名叫ic_back的图片,那么最终效果只都只显示一个ic_back,并不是展示各自module下的ic_back。
//设置了resourcePrefix值后,所有的资源名必须以指定的字符串做前缀,否则会报错。
//但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。
android {
resourcePrefix "${project.name}_" //给 Module 内的资源名增加前缀, 避免资源名冲突
}
加上之后,会在xml和value中提示。
不知道有没有智能的方案??
这个写的不错,https://www.cnblogs.com/ldq2016/p/9073105.html
module1和module2之间是平级关系,如何在module2中调用module1中的逻辑?
1在baselib中定义接口并继承IProvider
2在module1中写好实现类,实现定义的接口,并且实现类用@Route标识
3在module2中调用
在任何子module中都可以这么调用
结束骚操作,skr,skr,skr