原标题:彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(二)
在上一篇博客中,我给大家详细介绍了ant实现Android多分包技术,具体可以点击查看:彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一);接下来的这篇博客我将带领大家一起学习使用Gradle构建Android项目多分包。
增加多分包配置说到Gradle,就不得不提到使用AndroidStudio进行开发,首先看一下在AndroidStudio中我们整个项目的框架。
这里,为了实现多分包技术,我们首先需要使用Android SDK Build Tools 21.1及以上的版本,接着修改工程中app目录下的build.gradle文件,在defaultConfig中添加multiDexEnabled true这个配置项。完成后还需要在dependencies中添加multidex的依赖:
compile 'com.android.support:multidex:1.0.0'
具体代码如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.xingyu.castiel"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:multidex:1.0.0'
testCompile 'junit:junit:4.12'
}
代码中加入multidex功能
方案一:在manifest文件中指定Application为MultiDexApplication
<application
android:name="android.support.multidex.MultiDexApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
……>
方案二:让应用的Application继承MultiDexApplication
public class MyApplication extends MultiDexApplication{
……
}
方案三:重写Application的attachBaseContext方法,该方法放到onCreate前执行
public class MyApplication extends Application{
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
指定dex文件所包含的类
通常我们在build.gradle文件中添加afterEvaluate区域,并在其内部采用–main-dex-list选项来指定主dex中要包含的类。
自定义的主包类列表
castielmaindexlist.txt
需要注意的是,multidex的jar包中的9个类必须也要打到主包中,否则程序会因为找不到multidex相关类而抛出异常。
// 我主包中包含的类
com/xingyu/castiel/MainActivity.class
// multidex
android/support/multidex/MultiDex.class
android/support/multidex/MultiDexApplication.class
android/support/multidex/MultiDexExtractor$1.class
android/support/multidex/MultiDexExtractor.class
android/support/multidex/MultiDex$V14.class
android/support/multidex/MultiDex$V19.class
android/support/multidex/MultiDex$V4.class
android/support/multidex/ZipUtil$CentralDirectory.class
android/support/multidex/ZipUtil.class
多分包技术可能带来的问
(1)应用启动速度会降低
(2)部分android 4.0以下的设备可能会出现兼容问题
参考内容:《Android开发艺术探索》
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦