仪器测试期间的Renderscript NoClassDefFound

时间:2018-10-03 15:45:47

标签: android android-studio testing android-testing renderscript

我正在编写一个使用多个android.support.v8.renderscript函数的类的仪器化测试。

在设备上正常运行时,渲染脚本不会引发任何错误。但是,在androidTest中出现以下错误:

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v8/renderscript/Allocation;

build.gradle defaultConfig:

 defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0.0"
        renderscriptTargetApi 28
        renderscriptSupportModeEnabled true
        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
 }

如何确保在测试过程中renderscript可用?

该项目是开源的,您可以看到我正在测试的功能blur(),此处使用了renderscript:BlurKit

1 个答案:

答案 0 :(得分:0)

我遇到的问题是在创建RenderScript对象期间。

  

RenderScript rs = RenderScript.create(context);

我收到的错误与您相同

  

java.lang.NoClassDefFoundError:无法解决以下问题:Landroid / support / v8 / renderscript / Allocation;

我通过以下方式解决了此问题

  1. 从Android SDK目录(Android \ Sdk \ build-tools \ 28.0.3 \ renderscript \ lib \ renderscript-v8.jar)复制renderscript-v8.jar到应用程序模块libs目录(即:app \ libs 。创建libs目录(如果不存在)

    项目\

    • 应用\
      • 库\ renderscript-v8.jar
  2. 在app \ build.gradle中,将implementation files('libs/renderscript-v8.jar')添加到依赖项。

dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') .... implementation files('libs/renderscript-v8.jar') }

这些对我不起作用 renderscriptTargetApi 28 renderscriptSupportModeEnabled true