为测试版本命中65k方法dex限制

时间:2016-05-31 18:45:48

标签: android gradle android-gradle dex

我的应用程序在常规版本的dex限制之下,但是为测试版本提供了dex限制版本错误:

Conversion to Dalvik format failed:
Unable to execute dex: method ID not in [0, 0xffff]: 65536

这似乎是因为添加了这些用于测试的库:

androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'org.powermock:powermock-api-mockito:1.6.5'
androidTestCompile 'org.powermock:powermock-module-junit4:1.6.5'

我知道我可以去multidex版本,但是我想尽可能地避免它,以便我的构建时间不会上升 - 这将是最后的手段。我也无法将minSdkVersion设置为21用于调试版本,因为我的目标是API 19设备。我真的想继续使用上面的库 - 这些都没有好的选择。

在我的gradle配置下,我可以做些什么来将multidex限制为仅测试版本吗?或者其他任何可能的解决方案?

2 个答案:

答案 0 :(得分:1)

在构建脚本中尝试此操作,让proguard缩小代码:

android {
    buildTypes {
        debugTest.initWith(debug)
        debugTest {
            minifyEnabled true
        }
    }
}

...

android {
    testBuildType 'debugTest'
}

摘自stackoverflow.com/questions/21463089/proguard-gradle-debug-build-but-not-the-tests

答案 1 :(得分:0)

您可以创建新的构建风格,仅用于在高api级别上进行测试/开发。它看起来像这样:

android {
    productFlavors {
        testing {
            minSdkVersion 21
        }
    }
}

您可以在自定义“测试”中添加任何您也会置于defaultConfig中的配置。

定义之后,您可以使用左下角的Build Variants工具窗口在Android Studio中切换到这种风格。您可以使用assembleTestingDebug的gradle构建它。您可以根据需要定义多种口味,方便您使用。

http://tools.android.com/tech-docs/new-build-system/user-guide