组件化框架坑

2020-08-26  本文已影响0人  MakeHead

先上链接

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

上一篇 下一篇

猜你喜欢

热点阅读