日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )

發布時間:2025/6/17 Android 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Dex 打包設置
    • 1、多 Dex 支持
    • 2、Dex 分包設置
    • 3、開發和產品風格設置 ( 非必須 )
  • 二、完整 build.gradle 配置
    • 1、build.gradle 配置
    • 2、dex.keep 配置
  • 二、 源碼資源





一、Dex 打包設置



在 【Android 熱修復】熱修復原理 ( 類加載機制 | PathClassLoader 加載 Dex 機制 | PathDexList 查找 Class 機制 | 類查找的順序機制 )三、 類查找的順序機制 博客章節有講解到 , Android 類加載時 , 必須進行分包操作 , 必須有 111 個主包 , 若干其它分包 , 主包中只包含應用啟動少量代碼 , 如 Application , MainActivity 等 , 修復包 Dex 文件需要插入到主包后面 , 其它分包前面 , 才能生效 ;

如果主包出現問題 , 只能發布新版本 ;

指定主包的文件 , 主包之外的類打包到其它分包 , 每個分包都有固定大小 , 分包會自動根據大小分為若干分包 ;



1、多 Dex 支持


首先 ,

在 build.gradle 中配置 implementation 'com.android.support:multidex:1.0.2' 依賴 ,
在 android / defaultConfig 層級配置支持多 Dex 設置 multiDexEnabled true ,
在 android / buildTypes / release 層級配置支持多 Dex 設置 multiDexEnabled true ,

android {defaultConfig {multiDexEnabled true}buildTypes {release {multiDexEnabled true}} } dependencies {implementation 'com.android.support:multidex:1.0.2' }

然后 , 在 Application 中進行加載 , 在 attachBaseContext 中調用 MultiDex.install(base) 代碼 ,

public class MyApplication extends Application {@Overrideprotected void attachBaseContext(Context base) {MultiDex.install(base);super.attachBaseContext(base);}@Overridepublic void onCreate() {super.onCreate();} }

2、Dex 分包設置


規則語法 :

在 Module 下的 build.gradle 構建腳本中的 android / buildTypes / release 層級下 , 配置 multiDexKeepFile 設置 ,

通過該設置 , 可以設置 Dex 打包規則 ,

為 multiDexKeepFile 文件 , 定義規則 , 該定義規則有一定的語法 , 哪些 Java 源碼文件打包在主 Dex 中 , 可以通過該配置進行定義 ;

在 app 目錄下創建 " dex.keep " 文本文件 , 這里設置主包打包的 Java 字節碼文件 , 其它的類都打包到分包中 ;

dex.keep 主包打包規則文件內容 :

kim/hsl/hotfix/MainActivity.class kim/hsl/hotfix/MyApplication.class

build.gradle 配置 :

android {buildTypes {release {// 保留multiDexKeepFile file("dex.keep")}} }

打包效果 : 生成的 apk 文件中 , classes.dex 是主 Dex 文件 , classes2.dex 是分包 dex ;



3、開發和產品風格設置 ( 非必須 )


productFlavors 設置后 , 可以在開發調試時 , 節省時間 , 不是必須的 , 不設置也不會報錯 ;

如果配置了 productFlavors 選項 , 那么必須在 defaultConfig 中配置 flavorDimensions 維度版本號 , 否則在高版本的 Gradle 插件的情況下會報錯 ;

android {defaultConfig {// 維度版本號flavorDimensions "1.0"}// 定義不同的開發和產品風格productFlavors {// 開發風格dev {// 開發時使用 minSDKVersion = 21 允許 Android Gradle 插件// 為每個 Module 模塊產生一個 APK 安裝包 , 可以在 Android Lollipop 系統上進行測試// 無需進行耗時的 dex 合并過程minSdkVersion 21}// 產品風格prod {// 應用實際的最小 SDKminSdkVersion 14}} }



二、完整 build.gradle 配置





1、build.gradle 配置


plugins {id 'com.android.application' }android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "kim.hsl.hotfix"minSdkVersion 16targetSdkVersion 30versionCode 1versionName "1.0"multiDexEnabled true// 維度版本號flavorDimensions "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}// 定義不同的開發和產品風格productFlavors {// 開發風格dev {// 開發時使用 minSDKVersion = 21 允許 Android Gradle 插件// 為每個 Module 模塊產生一個 APK 安裝包 , 可以在 Android Lollipop 系統上進行測試// 無需進行耗時的 dex 合并過程minSdkVersion 21}// 產品風格prod {// 應用實際的最小 SDKminSdkVersion 14}}buildTypes {release {multiDexEnabled true// 保留multiDexKeepFile file("dex.keep")minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8} }dependencies {implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'// 使用 Android X 的應用添加該依賴implementation 'pub.devrel:easypermissions:3.0.0'implementation 'com.android.support:multidex:1.0.2' }

2、dex.keep 配置


kim/hsl/hotfix/MainActivity.class kim/hsl/hotfix/MyApplication.class



二、 源碼資源



源碼資源 :

  • GitHub 地址 : https://github.com/han1202012/HotFix
  • CSDN 源碼快照 : https://download.csdn.net/download/han1202012/16676099

( update.dex 更新包在源碼工程根目錄 )

總結

以上是生活随笔為你收集整理的【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。