Android组件化

1、组件化需要一个控制文件管理各个项目的配置包括sdk版本、依赖包等等
该文件应该位于project的根目录下


Android组件化_第1张图片
项目控制文件1-1.png

Android组件化_第2张图片
项目控制文件1-2.png

2、project要使用控制文件,必须要build.gradle中将控制文件引入


Android组件化_第3张图片
引入控制文件.png

3、各个模块的build.gradle引入1步创建的控制文件


Android组件化_第4张图片
配置参数.png

Android组件化_第5张图片
依赖包.png

4、动态切换app与library模式
根据控制文件中的参数(该示例为isModule)可动态切换模式


Android组件化_第6张图片
动态切换.png

5、分离AndroidMainfest文件
Android组件化_第7张图片
分离AndroidMainfest文件.png

debug中的AndroidMainfest文件为常规配置,包含启动图标、文件等等


Android组件化_第8张图片
debug.png

模块根目录下的AndroidMainfest文件,不包含启动图标等等,只有基础四大组件声明


Android组件化_第9张图片
模块中的AndroidMainfest.png

6、模块间资源命名冲突
当组件为library时,组件间如果资源名相同会出现冲突,我们只需要保证资源文件不存在同名即可,并且尽量保证模块前缀统一。


Android组件化_第10张图片
定义资源名.png

7、组件化与butterknife
在使用组件化与butterknife时,会提示元素值必须是常量表达式,因为在主app中,这些id都是常量,但是在组件中,这些id就不是常量了。
官方的解释是从ADT14开始Library中的R文件才从静态常量变为非常量.因为如果在多个Library中可能出现id冲突的问题.在ADT14以前则采用的是将所有的资源文件和相关的代码重新随着主项目一起编译,导致编译速度过慢.因此,从ADT14开始就变成了非常量的id了。
1、项目根目录下添加如下代码:


Android组件化_第11张图片
根目录代码.png

2、子目录添加如下代码:
Android组件化_第12张图片
子目录代码.png

3、子目录记得添加依赖:
Android组件化_第13张图片
依赖.png

4、然后在组件中使用butterknife的时候将R替换成R2即可。

---------------------------------------------over-----------------------------------------------
最近在使用kotlin写项目时发现几个坑记录一下:
1、运行app报错 There is no route match the path in group
根据网上的说法都验证了一遍,路径、引入文件都没有问题。
最后发现是使用kotlin时引入语法有些不同

//java项目中
javaCompileOptions {
            annotationProcessorOptions {
                arguments = [AROUTER_MODULE_NAME: project.getName()]
            }
        }
//kotlin项目中,使用以下方法
//kotlin特殊
apply plugin: 'kotlin-kapt'

kapt{
            arguments  {
                arg("AROUTER_MODULE_NAME", project.getName())
            }
        }

2、InstantRun support error, com.android.tools.fd.runtime.Paths

    compile 'com.alibaba:arouter-api:x.x.x'
    //这里需要改成kapt
    kapt 'com.alibaba:arouter-compiler:x.x.x'
    ...
}

你可能感兴趣的:(Android组件化)