一、Android插件化开发之(一)实现
二、Android插件化开发之(二)打包
三、Android插件化开发之(三)第三方库动态加载
注:转载请标明出处。
就目前而言,Android上的插件化开发技术都比较成熟了,很多大厂都有比较稳定的插件开发框架,可以拿来即用,简化开发。对于第三方的这些框架,这里就不多说(作者也不懂^_^),这里我想说的是插件化开发的核心技术,掌握了核心,想开发自己的框架就成为了可能。对于插件的开发,我觉得可以分为三个部分:代理、接口和插件。
一、代理
代理,我的理解就像是插排的插座,是宿主程序与插件对接的部分。对于这部分该怎么实现,这里就得去了解一下DexClassLoader的用法了,关于DexClassLoader的用法和作用就自己百度吧(人懒!),DexClassLoader是插件化开发的核心中的核心,是我们加载第三方的apk、dex或jar所必须的。我们可以实现一个管理类来操作创建自己的DexClassLoader对象,这个是宿主加载插件用的,怎么实现请看代码:
private var loader:DexClassLoader ?= null
{
var dexPath = "${path}classes2.dex"
var dex = context.getDir("dex", Context.MODE_PRIVATE)
loader = DexClassLoader(dexPath, dex.absoluteFile.absolutePath, null, context.classLoader)
}
fun getDexClassLoader():ClassLoader?{
return loader
}</