什么是Android Multidex热更新

Yang 358

Multidex热更新是指在不重启应用的情况下,通过后台向app推送一个fix、dex文件,等这个文件下载完成,app提示用户发现新的更新,需要重启app。待用户重启,代码修复即会生效。Android Multidex是一种应用配置,它使您的应用能够构建和读取多个DEX文件。

一、Android Multidex热更新

Multidex热更新是指在不重启应用的情况下,通过后台向app推送一个fix、dex文件,等这个文件下载完成,app提示用户发现新的更新,需要重启app。待用户重启,代码修复即会生效。

Android Multidex是一种应用配置,它使您的应用能够构建和读取多个DEX文件。这种配置允许您越过Dalvik Executable规范将可在单个DEX文件内引用的方法总数限制为65,536的限制,其中包括Android框架方法、库方法以及您自己的代码中的方法。

二、如何使用MultiDex

您可以在Android Studio中使用MultiDex,以便在方法数超过65536时使用。以下是使用MultiDex的步骤:

1、在app的build、gradle文件中添加以下代码:

“`

android {

    defaultConfig {

        、、、

        multiDexEnabled true

    }

    、、、

}

dependencies {

  implementation ‘com、android、support:multidex:1、0、3’

}

“`

2、在Application类中重写attachBaseContext方法

如下所示:

“`

public class MyApplication extends Application {

  @Override

  protected void attachBaseContext(Context base) {

    super、attachBaseContext(base);

    MultiDex、install(this);

  }

}

“`

三、实现Android热更新的其他方法

Android热更新是指在不重新安装应用程序的情况下,通过网络下载新的代码或资源文件,然后动态地更新应用程序的一种技术。以下是一些实现热更新的方法:

1、使用第三方框架,如Tinker、AndFix、Dexposed等。

2、使用插件化框架,如DroidPlugin、VirtualApk等。

3、使用WebView加载新的HTML和JavaScript代码。

4、使用动态加载技术,如DexClassLoader、PathClassLoader等。

延伸阅读

一、Dex文件是什么

写安卓,目前还是用 java比较多,就算是用 kotlin,它最终也是要转换成 java来运行。 java文件,被编译成 class之后,多个 class文件,会被打包成 classes.dex,被放到 apk中,安卓设备拿到 apk,去安装解析( 预编译balabala…),当我们运行 app时, app的程序逻辑全都是在classes.dex中。所以, dex文件是什么?一句话, dex文件是 android app的源代码的最终打包。

二、Dex文件如何生成

androidStudio 打包 apk的时候会生成 Dex,其实它使用的是 SDK的 dx命令,我们可以用 dx命令自己去打包想要打包的 class. 命令格式为:dx –dex –output=output.dex xxxx.class 将上面的output 和 xxxx换成你想要的文件名即可。

注:dx.bat在 安卓 SDK的目录下:比如我d的`C:\XXXXX\AndroidStudioAbout\sdk1\build-tools\28.0.3\dx.bat

三、ClassLoader是什么

ClassLoader来自 jdk,翻译为 :类加载器,用于将 class文件中的类,加载到内存中,生成 class对象。只有存在了 Class对象,我们才可以创建我们想要的对象。 android SDK继承了JDK的 classLoader,创造出了新的 ClassLoader子类。

回复

我来回复
  • 暂无回复内容

站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部