【问题标题】:Hitting 65k method dex limit for test builds测试构建达到 65k 方法 dex 限制
【发布时间】:2016-05-31 18:45:48
【问题描述】:

我的应用低于常规构建的 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 构建,但我想尽可能避免它,这样我的构建时间就不会增加 - 这将是最后的手段。由于我的目标是 API 19 设备,因此我也无法将 minSdkVersion 设置为 21 以进行调试构建。我真的很想继续使用上述库 - 这些库没有很好的替代品。

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

【问题讨论】:

  • 您是否尝试过为测试构建启用 proguard?
  • @muratgu 不,我没有。您有此所需配置的示例吗?
  • 我自己没有做过,但我从 SO 中的另一个问题中找到了一个配置。请参阅下面的答案。

标签: android gradle android-gradle-plugin dex


【解决方案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

【讨论】:

    【解决方案2】:

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

    android {
        productFlavors {
            testing {
                minSdkVersion 21
            }
        }
    }
    

    您可以将您也可以放入 defaultConfig 的任何配置放入您的自定义“测试”风格中。

    定义后,您可以在 Android Studio 中使用左下角的 Build Variants 工具窗口切换到此风格。你可以使用assembleTestingDebug 使用gradle 来构建它。您可以根据需要为您提供方便的不同配置来定义尽可能多的风味。

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

    【讨论】:

    • 嗨,道格。就像我在问题中提到的那样,我的工作专门针对 API 19 设备。我所有的测试都是在那个版本的设备上完成的。我已经在应用程序中使用了各种口味。
    • 您也应该能够在每种口味的基础上配置 multidex。只需将multiDexEnabled true 放在需要的地方即可。
    猜你喜欢
    • 1970-01-01
    • 2013-03-06
    • 2015-06-18
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2015-12-19
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多