Android优化之插件开发(动态加载Apk)

插件开发的概念

对于一个功能特别多,代码量特别大的App(比如支付宝,360卫士等)来说,如果把所有的功能和代码都写在一个app,那么会造成如下问题:

    稍微改动一个模块的一点代码都要编译整个工程,耗时耗力;
    公共资源、业务、模块混在一起耦合度太高;
    不方便测试;
    造成app体积过大,用户下载体验差

那么插件式开发就是为了解决这个问题的。总结一下,插件开发就是指在一个app中只完成基础和主要功能模块,对于其他可选的功能模块采用安装下载插件的方式实现。比如360手机助手将硬件加速,WIFI热点等功能做成了插件,如果用户需要,再下载安装即可。

通常来讲,一个插件就是一个完成了某个功能模块的app。那么安装一个插件,就是指安装一个具有该功能模块的apk文件。

插件开发的解决方案

目前的插件开发解决方案主要有:

360的DroidPlugindynamic-load-apk,携程的DynamicAPK 等等。

其中360的DroidPlugin框架最稳定,最易用。我们先运行其Demo查看一下效果。

使用DroidPlugin的步骤如下:

创建module,依赖DroidPlugin库:

compile project(':Libraries:DroidPlugin')

在Application中初始化DroidPlugin:



public class MyApp extends Application {

    @Override

    public void onCreate() {

        super.onCreate();

        PluginHelper.getInstance().applicationOnCreate(getBaseContext());

    }

    @Override

    protected void attachBaseContext(Context base) {

        PluginHelper.getInstance().applicationAttachBaseContext(base);

        super.attachBaseContext(base);

    }

}

编写代码,实现安装插件功能:



public void installNet(View v){

        String filepath = Environment.getExternalStorageDirectory()+"/app-minifyEnabled.apk";

        try {

            PluginManager.getInstance().installPackage(filepath, 0);

            Log.e(TAG, "installNet: 插件安装成功!");

        } catch (RemoteException e) {

            e.printStackTrace();

        }

}

编写代码,实现启动插件功能:

public void lanchPlugin(View v){
        PackageManager pm = getPackageManager();
        Intent intent = pm.getLaunchIntentForPackage("com.itheima.appthin98");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
}
插件开发总结:

目前插件开发,只需了解大概流程和相关框架即可。它只适用于功能模块特别繁多的大厂产品,比如支付宝等。我们精力有限,显示先了解这些东西,重点掌握多渠道打包和增量更新等技术。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值