一套完整有效的android组件化方案,支持组件的单独调试、集成调试、组件交互、UI跳转、动态加载卸载、组件完全隔离等功能
2017-12-27 23:03 阅读(314)

一套完整有效的android组件化方案,支持组件的单独调试、集成调试、组件交互、UI跳转、动态加载卸载、组件完全隔离等功能

实现功能:

原理解析

组件化设计思路 浅谈Android组件化

原理解释请参考文章Android彻底组件化方案实践

demo解读请参考文章Android彻底组件化demo发布

使用指南

1、主项目引用编译脚本

在根目录的gradle.properties文件中,增加属性:

mainmodulename=app

其中mainmodulename是项目中的host工程,一般为app

在根目录的build.gradle中增加配置

buildscript {
    dependencies {
        classpath 'com.luojilab.ddcomponent:build-gradle:1.0.0'
    }
}

为每个组件引入依赖库,如果项目中存在basiclib等基础库,可以统一交给basiclib引入

compile 'com.luojilab.ddcomponent:componentlib:1.0.0'

2、拆分组件为module工程

在每个组件的工程目录下新建文件gradle.properties文件,增加以下配置:

isRunAlone=truedebugComponent=sharecomponentcompileComponent=sharecomponent

上面三个属性分别对应是否单独调试、debug模式下依赖的组件,release模式下依赖的组件。具体使用方式请解释请参见上文第二篇文章

3、应用组件化编译脚本

在组件和host的build.gradle都增加配置:

apply plugin: 'com.dd.comgradle'

注意:不需要在引用com.android.application或者com.android.library

同时增加以下extension配置:

combuild {
    applicationName = 'com.luojilab.reader.runalone.application.ReaderApplication'
    isRegisterCompoAuto = true}

组件注册还支持反射的方式,有关isRegisterCompoAuto的解释请参见上文第二篇文章

4、混淆

在混淆文件中增加如下配置

-keep interface * {
  <methods>;
}
-keep class com.luojilab.component.componentlib.** {*;}
-keep class com.luojilab.router.** {*;}
-keep class * implements com.luojilab.component.componentlib.router.ISyringe {*;}
-keep class * implements com.luojilab.component.componentlib.applicationlike.IApplicationLike {*;}

关于如何进行组件之间数据交互和UI跳转,请参看 Wiki


github: https://github.com/luojilab/DDComponentForAndroid