Android架构之项目组件化实战

背景:


    公司项目之前eclipse环境下开发的,由于早起没有架构师规划项目存在很多问题,
1、代码没有解耦,好多代码项目之间强引用耦合在一起。
2、重复代码甚多,相同功能多次开发,冗余代码多。
3、项目无统一代码规范,复用难度大。
4、第三方框架引用多,大部分没有二次封装,升级维护难度大。
5、项目体谅大在eclipse环境下出现65535问题。


解决方案:


    经过讨论,选出两个方案,方案一是实现插件化,不仅解决65535问题而且还能具备热更新功能。但是由于代码哦呵程度高执行起来风险大所以选择第二套方案;项目组件化。
    首先将项目转移到Android studio上面,然后通过gradle项目配置完成组件开发架构。


组件化与插件化:


    插件化:通过热部署apk、jar、dex等插件文件来合并代码,主流的方式有代理模式或者通过反射hock系统关键流程。
    组件化:通过gradle项目配置,进程通讯、全局路由来整合组件项目,
    组件化相对插件化风险小,稳定性高。插件化则是具备热部署的主要特性,每个插件都是独立项目。
    插件化和组件化是两个不同的概念,但是两者也是不矛盾并且两者是可以协同使用,因为某种层面上你的项目想实现插件化必须先实现组件化。




项目结构:


    工程
|-壳工程  module (由于有个转换的过程,将原主工程作为壳工程,后期将没有业务代码,只是用来管理其他组件)
|-业务组件一 module
|-业务组件二 module
..................... ///这里省略,可以添加任意多业务组件
|-公司sdk工程 library(主要包括公用类库、第三方库等等)




最后实现组件gradle项目配置:


    组件化配置起来是比较容易的。上面描述了其实我们最终发布的还是一个完整app,只是在开发的时候实现独立module开发。所以只要配置gradle来实现module和library来换切换。

    在壳工程gradle配置:


    def isDev = IS_DEV_TAG.toBoolean()
    if (!isDev) {
        compile project(':plugin_module:rspluginmodule')
        compile project(':plugin_module:RsBlHomepage')
        compile project(path: ':BLVip')
    }

    上代码表示只有发布时候才引入作为library组件。
    在对应的组件gradle中配置:

if (isDev){
    apply plugin: 'com.android.application'
}else {
    apply plugin: 'com.android.library'
}

.................


if (isDev){
    applicationId packageName
}

    主要用来实现module library 切换。


    那么就可以通过上面的全局变量IS_DEV_TAG 来实现发布模式和组件开发模式切换。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值