Multidex(分包)實現簡要分析
1、Multidex的產生
在android5.0之前,每一個android應用中只會含有一個dex檔案,但是因為Android系統本身的BUG,使得這個dex的方法數量被限制在65535之內,這就是著名的"64K(641024)"*事件。為了解決這個問題,Google官方推出了這個類似於補丁一樣的support-library。關於這個庫的詳細使用,可以參考官方文件,當然使用起來也會有些坑的,美團填坑記或者這位老兄。使用這個庫後,我們的APP不再只會僅有一個dex檔案,可能會產生多個dex檔案,這樣就避免了64K問題。
2、使用方式
用Gradle配置使用Multidex
Android 的 Gradle外掛在 Android Build Tool 21.1開始就支援使用multidex了。
設定你的應用程式開發專案中使用multidex配置,要求你做出一些修改您的應用程式開發專案。
- 修改Gradle的配置,支援multidex
- 修改你的manifest。讓其支援multidexapplication類
- 修改Gradle的build如下:
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
對於Multidex的使用,大致有以下幾種方式
直接繼承MultiDexApplication
public class MyApplication extends MultiDexApplication{
// ...........
}
直接呼叫MultiDex.install(Context);
public class MyApplication extends Application{
public void onCreate(){
MultiDex.install(this);
}
}
這兩種使用方式,其實本質是一樣的,都是通過MultiDex.install(this)來完成dex的載入,看看MultiDexApplication的實現:
public class MultiDexApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
3、錯誤
- 一、錯誤型別是: Could not resolve com.android.support:multidex:1.0.2 時,解決方法如下
buildscript {
repositories {
jcenter()
mavenLocal()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
}
allprojects {
repositories {
jcenter()
google()
}
}
相關文章
- 磁碟原理簡要分析
- Mybatis實現分包定義資料庫MyBatis資料庫
- 簡要實現vue雙向繫結Vue
- ReactNative分包實踐React
- redux簡單實現與分析Redux
- 對網易雲性格主導色實現與演算法的簡要分析演算法
- LayaAir IDE如何實現快遊戲分包與載入AIIDE遊戲
- 夢想CMS(lmxcms)1.4 簡要分析
- AsyncTask與Thread+Handler簡要分析thread
- 分包基礎概念+使用分包
- hashCode()方法原始碼執行簡要分析原始碼
- Laravel 使用者認證最簡單的實現 比 Jetstream 要簡單很多Laravel
- 簡要分析Hacking Team 遠端控制系統
- 依存句法分析器的簡單實現
- 簡要分析近幾年商業軟體開發平臺的現狀
- 簡要說明jquery+jcrop實現的圖片裁剪儲存jQuery
- Multidex(二)之 Dex 預載入優化IDE優化
- Java 實現《編譯原理》簡單詞法分析功能Java編譯原理詞法分析
- Android實現錄屏直播(一)ScreenRecorder的簡單分析Android
- 簡要說明,實時資料分析將面臨哪些問題和挑戰?
- mpvue 分包方案Vue
- DigiCert證書屬於什麼級別 簡要分析
- 簡要分析ZooKeeper基本原理及安裝部署
- SignalR簡版web聊天室(實現過程分析篇)SignalRWeb
- Vue原始碼分析之實現一個簡易版的VueVue原始碼
- Nodejs 進階:readline 實現日誌分析 + 簡易命令列工具NodeJS命令列
- 軟體測評中心簡要分析:為什麼要進行軟體效能測試?
- 轉轉:微信小程式分包載入實戰微信小程式
- AspectJ簡單實現
- Entitas實現簡析
- FastClick簡單實現AST
- namedtuple簡易實現
- Promise 簡單實現Promise
- ReadableStream 簡單實現
- Express 簡單實現Express
- 精簡版 koa 簡單實現
- Cmake簡要配置
- AbstractRoutingDataSource 實現動態資料來源切換原理簡單分析