第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

徹底掌握Android多分包技術(shù)(二)

標(biāo)簽:
Android
原标题:彻底掌握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开发艺术探索》

點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消