【问题标题】:Test apk multidexed won't run on api-19测试 apk multidexed 不会在 api-19 上运行
【发布时间】:2016-08-26 15:20:48
【问题描述】:

在我当前的项目中,我们的测试 APK 已超过 64k 方法限制。 我们启用了 multidex,因此在 API > 19 的设备上运行测试没有问题,但在 API 19 上,运行程序无法在第二个 dex 文件中找到类。

我曾尝试减少 androidTestCompile 依赖项,但最大的罪魁祸首是 espresso,这是我需要的。

对于在原生不支持 multidex 的平台上运行的测试 APK 的 dex 限制是否有任何变通方法?

【问题讨论】:

标签: android android-testing android-espresso android-multidex


【解决方案1】:

在 Android L 之前,Dalvik 运行时用于执行应用代码。要绕过它,您可以使用multidex support library

Read more here.

【讨论】:

  • 我启用了 multidex,它适用于主 apk 我可以在 Dalvik 上正常运行应用程序,但不是测试 apk 不能运行 androidTests
【解决方案2】:

创建一个Java 类,这将是您的自定义testInstrumentationRunner

把这段代码放进去:

public class MultiDexAndroidJUnitRunner extends AndroidJUnitRunner {
    @Override
    public void onCreate(Bundle arguments) {
        //To make it work on MultiDex environment.
        //https://plus.google.com/+OleksandrKucherenko/posts/i7qZdVEy3Ue
        MultiDex.install(getTargetContext());

        super.onCreate(arguments);
    }
}

打开您应用的build.gradle

替换现有行:

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

使用你的自定义类:

testInstrumentationRunner "com.mypackagename.test.MultiDexAndroidJUnitRunner"

希望能成功

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2012-06-19
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多