gradle 插件 3.0.0 的 androidTest 的 Multidex 问题

Multidex issue for androidTest with gradle plugin 3.0.0

将我的应用程序更新到 gradle 插件 3.0.0 后,我开始遇到 multidex 问题,但只有当我 运行 androidTest.

我的应用程序已经是 multidex 并且使用 gradle 插件 2.3.3 assembleDebugassembleDebugAndroidTest 都工作正常。然后我刚刚将 gradle 插件更新到 3.0.0,我开始收到以下异常:

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

我尝试了不同的选项,例如为测试定义自定义 multidex 运行ner,添加 androidTestCompile 'com.android.support:multidex-instrumentation:1.0.2' 依赖项,但没有任何帮助。我也没有在 gradle 插件 3.0.0 的发行说明中找到,如果 android 测试有什么改变。

有人对 androidTest 有类似的问题吗?

我认为这是一个已知问题:https://issuetracker.google.com/issues/37324038

问题是 Android Gradle 插件 3.0.0 不支持旧版 multidex(最小 API < 21),专门用于 androidTest APK。我能够通过使用 min API >= 21 制作产品风味来使其工作,如下所示:

productFlavors {
    local {
        minSdkVersion 21
    }
    ci {
        minSdkVersion 17
    }
}

然后 运行 使用 connectedLocalDebugAndroid 测试任务的 androidTests