加载RS jni库时出错:UnsatisfiedLinkError:无法加载RSSupport:findLibrary返回null

时间:2014-02-26 12:04:58

标签: android android-support-library renderscript

将RenderScript与支持库一起使用时,我在Motorola iRazr(Android 4.1.2)上出现此错误

Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn't load RSSupport: findLibrary returned null

Samsung Galaxy S3上的一切正常。

        Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

        RenderScript rs = RenderScript.create(ctx);

        ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));

        Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
        Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);

        theIntrinsic.setRadius(BLUR_RADIUS);
        theIntrinsic.setInput(tmpIn);
        theIntrinsic.forEach(tmpOut);

        tmpOut.copyTo(outputBitmap);

我使用的支持库jar是

build-tools/19.0.1/renderscript/lib/renderscript-v8.jar

非常感谢任何帮助。

编辑:

我在libs文件夹中复制了so文件,并验证了so文件是否在设备上的data / data / lib文件夹中。

librsjni.so 和   libRSSupport.so 存在于设备上......

编辑:

更详细的错误:

  02-26 16:17:42.311: D/dalvikvm(16985): Trying to load lib /data/data/de.proximity.hero/lib/libRSSupport.so    0x42616b70
  02-26 16:17:42.321: D/dalvikvm(16985): Added shared lib /data/data/de.proximity.hero/lib/libRSSupport.so 0x42616b70
  02-26 16:17:42.321: D/dalvikvm(16985): No JNI_OnLoad found in /data/data/de.proximity.hero/lib/libRSSupport.so      0x42616b70, skipping init
  02-26 16:17:42.321: D/dalvikvm(16985): Trying to load lib /data/data/de.proximity.hero/lib/librsjni.so 0x42616b70
  02-26 16:17:42.351: E/RenderScript_jni(16985): Error loading RS jni library: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]:   141 cannot locate '__strlen_chk'...

6 个答案:

答案 0 :(得分:5)

您不必使用库build-tools/19.0.1/renderscript/lib/renderscript-v8.jar(删除它),因为谷歌团队说here,您只需要在project.properties文件中包含以下内容:

renderscript.target=18
renderscript.support.mode=true
sdk.buildtools=19.0.3

我希望这会对你有所帮助。

答案 1 :(得分:4)

According to Tim Murray(负责Android renderscript支持的人)这将在下一个构建工具版本(可能是19.1.1)中修复。

答案 2 :(得分:3)

由于目前没有解决方案,我们决定不使用renderscript。 如果这些问题得到解决,可能会有未来的更新。

答案 3 :(得分:3)

我知道OP不再有这个问题,但我只是想对其他任何碰到这个问题的人发表评论。在这种情况下OP可能只有armeabi的libRSSupport.so而不是x86,这就是为什么它可以在S3上运行而不是RAZR" i"在英特尔芯片组上运行的系列设备。

答案 4 :(得分:3)

谷歌已修复Build Tools, Revision 23.0.3。您可以在/build-tools/x.x.x/renderscript/lib中找到支持包。问题已经解决。

答案 5 :(得分:1)

您必须将JNI库包含在应用程序包的一部分中。请检查您是否意外剥离它们。对于应用程序中的每个用户脚本,您应该有libRSSupport.so,librsjni.so以及librs..so。这些应存在于任何ARM设备的lib / armeabi-v7a目录下。 x86 / mips也应该有类似的子目录。