安卓插件化系列课程-一步步带你实现插件化

一.前言:

目前安卓领域,插件化十分的流行,本以为这一类的文章会有很多,但是百度一搜,基本上讲的插件化都是皮毛,没有涉及到插件化原理的本身。

鉴于此,就写一系列的文章,详细的介绍其原理,并一步一步增加难度的实现方式,最终实现插件化。

当然,插件化的方案有很多很多,本系列文章讲的只是便常用的一种。

如果想完整的了解所有的插件化方案,可以参见我github的开源项目,详细的对比所有的插件化方案,供你选择最合适和自己项目的那个插件化方案。

二.目标:

本系列文章的目标并不是带你去实现一个成熟的插件化框架,而是带你一步一步的了解插件化的原理,通过对插件化的了解逐渐的加深对安卓系统源码的了解,从而更方便的去了解和改造目前市面上的那些成熟的插件化框架。

三.模块化/组件化/插件化

首先明确以下几个概念,后续文章中,统一叫插件化,我们的最终目标也是实现插件化,但是中间很多流程,还停留在组件化的范畴。

模块化:

指的是把一个大的项目拆分成若干个Module模块以及一个application模块。

组件化:

指的是在模块化的基础上,实现了动态加载。即最终打包的产物APK只包含一些基础功能,然后根据实际需求加载不同的插件APK。这些APK有可能是assets文件夹中的,也有可能是通过网络网络下载的。但是有一个前提,这些插件APK是对宿主模块有依赖关系的,并且插件APK是不能独立运行的。

插件化:

插件化和组件化最大的区别就是插件APK对宿主完全没有任何依赖关系,插件APK既可以作为一个独立APK使用,也可以作为宿主APP的一个功能来使用。

总结:

目前市场上,大多数的都属于组件化的范畴,这也和每个公司的实际需求相关的。目前的组件化的功能大都是一个APK中去承载各个业务模块,而不是承载不同的功能的APK。而这些业务模块是可以根据宿主的要求去做一些定制的。

而本系列的介绍的主要还是插件化的实现方式,即宿主对插件APK无任何要求即可加载。

四.实验环境:

本系列文章都基于安卓12的源码来讲解,验证版本包含安卓10和安卓12,其他版本暂未验证。

五.本系列文章主要分为以下篇章:

1.加载插件apk中的工具类

安卓插件化课程-第一篇:加载插件apk中的工具类https://blog.csdn.net/rzleilei/article/details/122558301
2.启动插件apk中的activity        

安卓插件化课程-第二篇:加载插件apk中的activity_分享+记录-CSDN博客https://blog.csdn.net/rzleilei/article/details/122559919
3.使用插桩的方式启动apk中的activity    

安卓插件化课程-第三篇:埋桩的方式启动插件中的activity_分享+记录-CSDN博客序:1.本文是安卓插件化课程的第三篇,完整课程链接参见下面链接:安卓插件化课程-序章_分享+记录-CSDN博客前言:目前安卓领域,插件化十分的流行,本以为这一类的文章会有很多,但是百度一搜,基本上讲的插件化都是皮毛,没有涉及到核心。所以就想写一系列的文章来一步一步深入的讲解插件化,通过实现逐渐增加难度的需求,最终实现插件化方案。章节:插件化系列文章主要包含以下几个篇章:1.加载插件apk中的类2.启动插件apk中的activity3.使用插桩的方式启动apk中的activity4.使用插件apk中.https://blog.csdn.net/rzleilei/article/details/122577006


4.宿主中使用插件apk中的资源        

安卓插件化课程-第四篇:加载apk中的资源https://blog.csdn.net/rzleilei/article/details/122577026


5.在插件中使用插件中的资源文件

安卓插件化课程-第五篇:插件中的activity使用插件中资源https://blog.csdn.net/rzleilei/article/details/122599997


6.宿主和插件中使用插件中的SO文件

安卓插件化课程-第六篇:使用插件apk中的so文件https://blog.csdn.net/rzleilei/article/details/122637880

7.解决插件中activity跳转的问题

我们宿主启动插件Activity,使用的是启动HostActivity的方式,但是插件当中的启动方式仍然是activity,所以仍然会遇到activity not found的问题,本文就是解决这个问题。

安卓插件化课程-第七篇:解决插件中activity跳转的问题_分享+记录-CSDN博客1.本文是安卓插件化课程的第七篇,完整课程链接参见下面链接:2.前面几篇我们讲了,我们宿主启动插件Activity,使用的是启动HostActivity的方式。在宿主中给启动插件的Activity,我们可以改为启动HostActivity的方式,但是插件中怎么办呢?插件中的启动方式是startActivity已经是固定不变的了。所以在插件中使用老的方式启动,仍然会遇到activity not found的问题,而本文就是解决这个问题。 https://blog.csdn.net/rzleilei/article/details/122718980

 

8.解决插件中layout中引用资源错误的问题

9.插件化所遇到的问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失落夏天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值