代码改变世界

Android分包MultiDex原理详解

2016-07-01 11:50  百度乜搜不到  阅读(533)  评论(0编辑  收藏  举报

这里只做Android Studio分包配置简单的介绍。

第一步: 
在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'
}

添加两句代码: 
(1)multiDexEnable true 
(2)compile 'com.android.support:multidex:1.0.0'

第二步: 
在AndroidManifest.xml文件中做如下配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

如果你要定义自己的Application,或者已经有了自定义Application,那么不需要在application节点中用android.support.multidex.MultiDexApplication,而是用自己的Application类的全名即可,而且自定义的Application也不需要继承MultiDexApplicatoin

第三步: 
如果有自定义的Application,那么在自定义的Application类中,重写attachBaseContext(),并且在其中调用super.attachBaseContext(),然后调用MultiDex.install(this) ,然后在该方法上加上@Override注解,既然是重写方法,最好加上这个注解,不过Android Studio会自动加上。

有两点可以注意:

    • attachBaseContext()是在ContextWrapper类中的。而MultiDexApplication继承Application,就是如第二步一样重写了attachBaseContext()方法。
    • 不需要另外在libs中添加jar