本文介绍了Android的 - Renderscript支持库 - 错误加载RS JNI库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想包括Renderscript支持库到我的项目。我收到以下错误。

  android.support.v8.renderscript.RSRuntimeException:错误加载RS JNI库:java.lang.UnsatisfiedLinkError中:无法加载rsjni:findLibrary返回NULL

我没有使用任何Renderscript的jar文件,我试图通过摇篮来使用它。

下面是我Gradle.build文件

TOP LEVEL

  buildscript {
库{
    jcenter()
}
依赖{
    类路径'com.android.tools.build:gradle:1.2.3
}
}转{
compileSdkVersion =谷歌Inc.:Google的API:22
buildToolsVersion =23.0.1
playStoreMinSdkVersion = 16
amazonStoreMinSdkVersion = 8
targetSdkVersion = 22
版本code = 20
=的versionName3.3.0
runProguard =真
的zipalign =真
proguardConfiguration ='.. / proguard.config
}allprojects {
库{
    jcenter()
}
}

专用

  defaultConfig {
    的applicationID**中排除
    // noinspection GroovyAssignabilityCheck
    targetSdkVersion rootProject.ext.targetSdkVersion
    // noinspection GroovyAssignabilityCheck
    版本code rootProject.ext.version code
    // noinspection GroovyAssignabilityCheck
    rootProject.ext.versionName的versionName    renderscriptTargetApi 23
    renderscriptSupportModeEnabled真
}

一切我试着和放大器;发现作为计算器可能的解决方案不工作。我也有这个列入我的ProGuard配置

  #RenderScript
-keepclasseswithmembernames类* {
天然的所述;方法&gt ;;
}
-keep类android.support.v8.renderscript ** {*。 }

编辑:这里是我实际使用renderscript的实施,也这是它使我的应用程序调用的时候,崩溃

 公共静态BitmapDrawable模糊(查看视图){    位图图像= GetScreenshot(视图);    INT宽度= Math.round(image.getWidth()* DEFAULT_BITMAP_SCALE);
    INT高度= Math.round(image.getHeight()* DEFAULT_BITMAP_SCALE);    位图inputBitmap = Bitmap.createScaledBitmap(图像,宽度,高度,假);    位图outputBitmap = Bitmap.createBitmap(inputBitmap);    RenderScript RS = RenderScript.create(view.getContext());
    ScriptIntrinsicBlur intrinsicBlur = ScriptIntrinsicBlur.create(RS,Element.U8_4(RS));    分配tmpIn = Allocation.createFromBitmap(RS,inputBitmap);
    分配tmpOut = Allocation.createFromBitmap(RS,outputBitmap);    intrinsicBlur.setRadius(DEFAULT_BLUR_RADIUS);
    intrinsicBlur.setInput(tmpIn);
    intrinsicBlur.forEach(tmpOut);    tmpOut.copyTo(outputBitmap);    inputBitmap.recycle();
    rs.destroy();    返回新BitmapDrawable(outputBitmap);
}

这是确切的行

  RenderScript RS = RenderScript.create(view.getContext());


解决方案

不幸的是Renderscript是不适用于 armeabi 架构。光明的一面是,你可以在运行时检查设备的架构,而不是这些设备上运行Renderscript code:

  System.getProperty(os.arch);

还有一个问题,在Android bug跟踪系统,在那里他们的状态开:

https://code.google.com/p/android/issues/detail?id=68520

Edit: If you want to implement a blur without Renderscript on armeabi devices, you can simply downscale the image with Bitmap.createScaledBitmap setting filter to true.

这篇关于Android的 - Renderscript支持库 - 错误加载RS JNI库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 03:54