android 代码隔离,GitHub - Rulemylife/JIMU: 一种简单有效的android组件化方案,支持组件的代码资源隔离、单独调试、集成调试、组件交互、UI跳转、生命周期等完整功能...

JIMU

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d417061636865253230322e302d6f72616e67652e737667

项目介绍

JIMU(积木)是一套Android组件化框架,支持组件的代码资源隔离、单独调试、集成调试、组件交互、UI跳转、生命周期等完整功能。

取名为JIMU(积木),其含义是应用这套框架可以做到组件之间的完全隔离,每个组件可以单独运行,同时又可以通过“接口”任意拼接成一个完成APP,这种能力就是我们实施组件化的最终目的。

最新版本

模块

build-gradle

componentlib

router-anno-compiler

router-annotation

最新版本

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f7a686d7171303532372f636f6d706275696c642f6275696c642d677261646c652f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f7a686d7171303532372f636f6d706275696c642f636f6d706f6e656e746c69622f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f7a686d7171303532372f636f6d706275696c642f726f757465722d616e6e6f2d636f6d70696c65722f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f7a686d7171303532372f636f6d706275696c642f726f757465722d616e6e6f746174696f6e2f696d616765732f646f776e6c6f61642e737667

仓库2:

模块

build-gradle

componentlib

router-anno-compiler

router-annotation

最新版本

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f6c656f626572742d6c616e2d6f73732f6d6176656e2f6275696c642d677261646c652f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f6c656f626572742d6c616e2d6f73732f6d6176656e2f636f6d706f6e656e746c69622f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f6c656f626572742d6c616e2d6f73732f6d6176656e2f726f757465722d616e6e6f2d636f6d70696c65722f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f6c656f626572742d6c616e2d6f73732f6d6176656e2f726f757465722d616e6e6f746174696f6e2f696d616765732f646f776e6c6f61642e737667

因为没有创建组织账号,可能会发布到不同的仓库,出现版本差异时请关注下release-note

实现功能:

组件可以单独调试

杜绝组件之前相互耦合,代码完全隔离,彻底解耦

组件之间通过接口+实现的方式进行数据传输

使用scheme和host路由的方式进行activity之间的跳转

自动生成路由跳转路由表

任意组件可以充当host,集成其他组件进行集成调试

可以动态对已集成的组件进行加载和卸载

支持kotlin组件

原理解析

使用指南

1、主项目引用编译脚本

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

mainmodulename=app

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

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

buildscript {

dependencies {

classpath 'com.github.jimu:build-gradle:A.B.C'

}

}

current lastest version 1.3.2 has just post a request to includeed in the bintray's jCenter,maybe you cannot fetch it before the request has been approved

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

compile 'com.github.jimu:componentlib:A.B.C'

2、拆分组件为module工程

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

isRunAlone=true

debugComponent=sharecomponent

compileComponent=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 * {

;

}

-keep class com.luojilab.component.componentlib.** {*;}

-keep class com.luojilab.gen.router.** {*;}

-keep class * implements com.luojilab.component.componentlib.router.ISyringe {*;}

-keep class * implements com.luojilab.component.componentlib.applicationlike.IApplicationLike {*;}

注意:com.luojilab.component.componentlib和com.luojilab.gen.router包可能在项目迁移的过程中发生过或即将发生变化,文档更新不一定及时,请手工确认一下生成类的包路径。

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

关于消息中间件,请参考v1.3.3releaseNote

组件化讨论群

JIMU的讨论群,群号693097923,欢迎大家加入:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值