使用Gradle插件3.0.0进行AndroidTest的Multidex问题

7
一旦我将应用程序更新为 gradle 插件 3.0.0,我就开始遇到 multidex 的问题了,但只有在运行 androidTest 时才会出现。
我的应用程序已经启用了 multidex,并且使用 gradle 插件 2.3.3 时,assembleDebug 和 assembleDebugAndroidTest 都能正常工作。然后我只是将 gradle 插件更新到 3.0.0,就开始收到以下异常:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
我尝试了不同的选项,例如为测试定义自定义 multidex runner,在依赖中添加 androidTestCompile 'com.android.support:multidex-instrumentation:1.0.2',但没有帮助。我在 gradle 插件 3.0.0 的发行说明中也没有找到任何关于 android 测试的更改内容。
是否有人对 androidTest 有类似的问题?
1个回答

5

我相信这是一个已知的问题:https://issuetracker.google.com/issues/37324038

问题在于,在 Android Gradle 插件 3.0.0 中,特别是用于 androidTest APK 的遗留 multidex(min API < 21)不受支持。通过创建一个产品口味,使 min API >= 21,我成功让它工作了,方法如下:

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

然后使用connectedLocalDebugAndroidTest任务来运行androidTests


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接