Android RenderScript:无法打开共享库:(null)
我编写了一个简单的应用程序,它使用RenderScript来更改相机的预览。除了安卓7.0的“荣誉6X”和“Nexus 6p”之外,其他设备都没有问题。安卓7.0的摄像头预览只显示一个黑屏 错误消息如下所示:Android RenderScript:无法打开共享库:(null),android,renderscript,android-7.0-nougat,android-7.1-nougat,Android,Renderscript,Android 7.0 Nougat,Android 7.1 Nougat,我编写了一个简单的应用程序,它使用RenderScript来更改相机的预览。除了安卓7.0的“荣誉6X”和“Nexus 6p”之外,其他设备都没有问题。安卓7.0的摄像头预览只显示一个黑屏 错误消息如下所示: V/RenderScript: Successfully loaded runtime: libRSDriver_adreno.so E/RenderScript: Unable to open shared library (/data/user_de/0/com.my.test/cod
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文件与以下文件相同:
编辑:
摄像头预览仅在上述设备上显示黑屏。这不是
RenderScript
的问题,而是摄像头或我的实现的问题,因为我发现一些设备没有调用导致此问题的onPreviewFrame
。我认为这很正常,你的应用程序正常吗?别忘了,pragma rs#u fp#u relaxedno,它只是显示了一个黑屏。您是否在加载的位图上尝试过它作为输入?可能不会影响任何内容,但请尝试设置。a=255以确保alpha不是0。
#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;
}