什么是Android Multidex热更新
Multidex热更新是指在不重启应用的情况下,通过后台向app推送一个fix、dex文件,等这个文件下载完成,app提示用户发现新的更新,需要重启app。待用户重启,代码修复即会生效。Android Multidex是一种应用配置,它使您的应用能够构建和读取多个DEX文件。
![](https://cdn-kb.worktile.com/kb/wp-content/uploads/2023/06/2023060410325898.jpg)
一、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子类。