Android 项目模块化开发,提高开发效率。

把Demo放在第一!!!

这里提供一个Demo,点击进入下载页

Github:https://github.com/601367322/MyFast

随着需求的增加,代码量随之变得庞大、臃肿。于是产生了很多影响开发效率的问题。
例如:
1. 方法数超过65K。
2. 程序编译运行一次至少1-2分钟。
3. 代码变得难以管理,影响阅读及修改效率。
4. 代码之间紧密度高,不好拆分任务……

为了解决上述种种问题,我设计了一个简单的模块化机制。
先来看看我项目的大致结构吧。

这里写图片描述

图中可以看到,项目里有很多自定义的代码库和第三方库(统计、反馈、视频、热修复、音乐、支付、分享、更新等等)。其中标注红线的lib都是可拆分的模块。
我们可以做到,在开发Debug的时候按需加载这些模块,使得编译速度大大提升,而在正式Release的时候,则全量自动加载。

Debug版本编译大小
这里写图片描述

Release版本编译大小
这里写图片描述

按需编译,不仅体积变小了,编译速度也提升了好几倍。

图解

这里写图片描述

如何实现反射

public class PluginManager {

    IOne one;

    ITwo two;

    private static PluginManager mInstance;

    public PluginManager() {
        try {
            one = getImpl("com.example.fast.impl.OneImpl");
            two = getImpl("com.example.fast.impl.TwoImpl");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private <T> T getImpl(String className) {
        try {
            Class<?> clazz = Class.forName(className);
            return (T) clazz.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    public static PluginManager getInstance() {
        if (mInstance == null) {
            synchronized (PluginManager.class) {
                if (mInstance == null) {
                    mInstance = new PluginManager();
                }
            }
        }
        return mInstance;
    }

    public static IOne getOne() {
        return getInstance().one;
    }

    public static ITwo getTwo() {
        return getInstance().two;
    }

}

如何调用

public void onOneBtnClick(View view) {
    if (PluginManager.getOne() != null) {
        PluginManager.getOne().startActivity(this);
    }
}

public void onTwoBtnClick(View view) {
    if (PluginManager.getTwo() != null) {
        PluginManager.getTwo().startActivity(this);
    }
}

如何实现按需加载

gradle已经为我们提供里很方便的功能。

compile project(':lib.one') //任何时候都会加载
releaseCompile project(':lib.two') //打包的时候加载

特别注意

一定要注意混淆的规则,不能讲被反射的类混淆掉,否则会无法反射。

-keep class 你的实现类所在的包名.**{*;}

这里写图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值