RenderScript:无法打开共享库:(空)

RenderScript: Unable to open shared library: (null)

我写了一个简单的应用程序,它使用 RenderScript 来改变相机的预览。其他设备没有问题,除了 Honor 6XNexus 6p 都是 Android 7.0,其中相机预览只显示黑屏。

报错信息如下:

V/RenderScript: Successfully loaded runtime: libRSDriver_adreno.so
E/RenderScript: Unable to open shared library (/data/user_de/0/com.my.test/code_cache/com.android.renderscript.cache/librs.invert.so): (null)
V/RenderScript: Invoking /system/bin/bcc with args '/system/bin/bcc -unroll-runtime -scalarize-load-store -rs-global-info -rs-global-info-skip-constant -o invert -output_path /data/user_de/0/com.my.test/code_cache/com.android.renderscript.cache -bclib /system/lib/libclcore.bc -mtriple armv7-none-linux-gnueabi -O 3 -load libbccQTI.so -fPIC -embedRSInfo /data/user_de/0/com.my.test/code_cache/com.android.renderscript.cache/invert.bc -build-checksum abadcafe'
V/RenderScript: Invoking /system/bin/ld.mc with args '/system/bin/ld.mc -shared -nostdlib /system/lib/libcompiler_rt.so -mtriple=armv7-none-linux-gnueabi --library-path=/system/vendor/lib --library-path=/system/lib -lRSDriver_adreno -lm -lc /data/user_de/0/com.my.test/code_cache/com.android.renderscript.cache/invert.o -o /data/user_de/0/com.my.test/code_cache/com.android.renderscript.cache/librs.invert.so'

我的 RenderScript 文件也一样: https://developer.android.com/guide/topics/renderscript/compute.html#writing-an-rs-kernel

#pragma version(1)
#pragma rs java_package_name(com.my.test)

uchar4 RS_KERNEL invert(uchar4 in, uint32_t x, uint32_t y) {
  uchar4 out = in;

  out.r = 255 - in.r;
  out.g = 255 - in.g;
  out.b = 255 - in.b;
  return out;
}

编辑:

摄像头预览仅在上述设备上显示黑屏。

这不是 RenderScript 的问题,而是相机或我的实现的问题,请参阅 ,因为我发现某些设备不调用 onPreviewFrame,这导致这个问题。