如何在Android studio的Android 5.0之前使用android-support-multidex.jar手机?

时间:2015-09-24 05:29:28

标签: android gradle multidex

我想在一个apk中使用更多classes.dex文件构建我的应用程序。所以我按照谷歌帮助页面的说明。这对Android 5.0来说还可以,但我无法在Android 5.0之前为手机构建。它始终报告:com.android.dex.DexException: - main-dex-list中的类太多,超出了主要的dex容量。我不太热建。我的构建gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 21
    //buildToolsVersion "20"
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.android.ccbtest.first"
        minSdkVersion 21
        targetSdkVersion 21
        multiDexEnabled true
    }
    dexOptions {
        preDexLibraries = false
    }
    afterEvaluate {
        tasks.matching {
            it.name.startsWith('dex')
        }.each { dx ->
            if (dx.additionalParameters == null) {
                dx.additionalParameters = []
            }
            dx.additionalParameters += '--multi-dex' // enable multidex

            // optional
            // dx.additionalParameters += "--main-dex list=$projectDir/<filename>".toString() // enable the main-dex-list
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    }

dependencies {
    compile files('libs/ccbtest.jar')
    compile files('libs/ccbtest1.jar')
    compile files('libs/ccbtest2.jar')
    compile files('libs/ccbtest3.jar')
    compile files('libs/ccbtest4.jar')
    compile files('libs/ccbtest5.jar')
    compile files('libs/ccbtest6.jar')

    // Multi-dex Lib
    compile 'com.android.support:multidex:1.0.0'
}

如果我将minSdkVersion 21从21修改为20.它将失败。

我想在Android 5.0之前使用手机。请帮帮我。

感谢。

BR

mwt

1 个答案:

答案 0 :(得分:0)

首先,作为oberflansch commented,删除您传递给multiDexEnabled = true的闭包。一旦您指定Too many classes in --main-dex-list, main dex capacity exceeded,Android gradle插件将自动处理所有dx配置。

Private Sub ButtonOk_Click(sender As System.Object, e As System.EventArgs) Handles ButtonOk.Click FormNoveZaznamy.DataGridViewUrazy.Rows(0).Cells(7).Value = "Test" Me.Close() End Sub 错误很可能表示您的 主要dex文件 超出了65536方法限制。

我在过去遇到过同样的问题,最终不得不修补Android gradle插件,不在main dex中包含Activity类。它有点hacky,但效果很好。有关详细说明,请参阅my blogpost