Android动态加载:DL框架

移动开发 Android
今天我们介绍一种新的概念:android的动态加载。首先呢我们要了解什么是android的动态加载?android的动态加载即我们可以动态的调用一个没有安装过的APK。而这个APK是可以随时替换的。这就是我们所说的android动态加载。

今天我们介绍一种新的概念:android的动态加载。

首先呢我们要了解什么是android的动态加载?android的动态加载即我们可以动态的调用一个没有安装过的APK。而这个APK是可以随时替换的。这就是我们所说的android动态加载。

那么动态加载的好处是什么呢?作为一个android团队我们可以享受到以下几种好处:

1.可以实行热补丁更新

2.可以大大提升新版本的覆盖率

3.可以减轻服务器对旧版本的接口兼容压力

4.提高app启动速度

动态加载的原理:

Android程序主要是java代码写出,故android程序是拥有java语言的一些特性的,如反射机制,所以我们可以利用反射机制来实现程序的动态加载,通过外部来调用没有安装的apk代码。Java程序中反射机制主要是通过ClassLoader将想要注入的Class加载到Jvm中,而android的动态加载类似,是通过DexClassLoader将apk文件加载到虚拟机中。

今天主要将介绍一款android的动态加载框架:DL动态加载框架。

该框架是几位同学在github上共同开发的框架。可以在github上下载源码。通过DL框架可以实现android开发插件化,通过实时的热补丁来修复线上的问题。不需要用户特意的去下载新版本,即可完成功能上线。那么关于DL框架的使用,我们应该了解哪些事项呢。

首先我们要了解DL的使用模式有3种模式:

1. depend_on_host:插件完全依赖宿主的模式,适合于能够能到宿主的源代码的情况。

2. depend_on_interface:插件部分依赖宿主的模式,或者说插件依赖宿主提供的接口,适合能够拿到宿主的接口的情况。

3. main:插件不依赖宿主的模式,这是DL推荐的模式。

以上的三种模式可以分别适应开发时不同的情况:

模式1.插件完全依赖宿主的模式,适合于能够能到宿主的源代码的情况。这种模式一般多用在公司内部,插件可以访问宿主的所有代码,但是,这样插件和宿主的耦合比较高,宿主一动,插件就必须动,比较麻烦。

模式2.插件部分依赖宿主的模式,或者说插件依赖宿主提供的接口,适合能够拿到宿主的接口的情况。在这种模式下,宿主放出一些接口并实现一些接口,然后给插件调用,这样插件就可以访问宿主的一些服务等。

模式3.这是DL推荐的模式,对应的工程目录为main。在这种模式下,宿主和插件不需要通信,两者是独立开发的,宿主引用DL的jar包(dl-lib.jar), 插件也需要引用DL的jar包,但是不能放入到插件工程的libs目录下面。

以上这三种模式,我们可以挑选一种模式来开发我们的程序。同学们可以自己去钻研,早日实现自己的***个可以动态加载的APP。

责任编辑:庞桂玉 来源: 搜狗测试
相关推荐

2009-10-27 10:28:33

Silverlight

2016-11-29 10:49:29

Android

2021-10-24 06:50:52

AndroidClassLoaderJava

2019-09-17 10:23:45

深度学习开源人工智能

2015-08-07 10:08:36

Facebook框架

2011-05-31 11:05:16

ListView 数据

2021-04-18 07:20:09

CMS系统模块

2011-07-06 16:15:46

iPhone 图片

2014-07-18 08:47:26

KJFrameAndroidBitmap

2009-08-28 16:14:26

C#实现加载动态库

2011-06-24 09:01:20

Qt QLibrary dll

2021-07-24 10:03:18

AI 数据人工智能

2011-07-21 17:35:11

iPhone Table 图片

2011-07-25 15:32:06

iPhone Table 动态

2022-07-20 11:13:05

前端JSONVue3

2017-01-03 15:23:56

Android动态加载SO库

2023-11-07 10:19:08

2009-06-24 17:32:40

动态加载AppDoma

2021-10-18 10:36:31

Spring Boot插件Jar

2021-10-18 12:04:22

Spring BootJava开发
点赞
收藏

51CTO技术栈公众号