0

我正在尝试解决此问题:

E/RenderScript:无法打开共享库(/data/user_de/0/com.xxxx/code_cache/com.android.renderscript.cache/librs.yuv2rgbframes.so):(null)

我按照文档的指示在 build.gradle 中设置了渲染脚本:

android {
    ...
    defaultConfig {
        ...
        renderscriptTargetApi 18
        renderscriptSupportModeEnabled true
    }
}

起初我认为这是因为渲染脚本本身位于另一个模块中(它生成了一个由应用程序项目链接的 .aar),但这似乎不是问题。我尝试将上述内容同时放入 .aar 模块和应用程序模块 - 没有区别。

我的下一步是查看 .aar 和 .apk 的内容,这导致了我的问题:我应该能够在某处看到生成的 .so 文件吗?我希望看到 arm7 的 .so 和 x86 的另一个,但没有。

有一些关于这个的问题,但它们不是一回事。但我在这里的主要问题与我如何解决这个问题有关:这个 .so 文件在哪里结束。我认为这些工具实际上必须设置好,因为它成功地为渲染脚本生成了 java 存根......

...

编辑:也许我误解了这里发生了什么。在我粘贴错误之后,还有两条消息:

E/RenderScript: 无法打开共享库 (/data/user_de/0/com.xxx.powerscan/code_cache/com.android.renderscript.cache/librs.yuv2rgbframes.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 yuv2rgbframes -output_path /data/user_de/0 /com.xxx.powerscan/code_cache/com.android.renderscript.cache -bclib /system/lib64/libclcore.bc -mtriple aarch64-none-linux-gnueabi -O 3 -aarch64-fix-cortex-a53-835769 -load libbccQTI.so -fPIC -embedRSInfo /data/user_de/0/com.xxx.powerscan/code_cache/com.android.renderscript.cache/yuv2rgbframes.bc -build-checksum abadcafe' V/RenderScript:调用 /system/bin/ld .mc 与 args '/system/bin/ld.mc -shared -nostdlib /system/lib64/libcompiler_rt.所以 -mtriple=aarch64-none-linux-gnueabi --library-path=/system/vendor/lib64 --library-path=/system/lib64 -lRSDriver_adreno -lm -lc /data/user_de/0/com.xxx。 powerscan/code_cache/com.android.renderscript.cache/yuv2rgbframes.o -o /data/user_de/0/com.xxx.powerscan/code_cache/com.android.renderscript.cache/librs.yuv2rgbframes.so'

它真的会在平台上生成 .so 吗?

4

1 回答 1

1

是的,Renderscript 代码是根据其内部位码格式在目标上编译的。这样做是因为每个 Android 设备都不同,并且以不同的方式支持 RS。非常基本的平台将提供一个 CPU“驱动程序”层,它只会利用 CPU 来完成 RS 工作(使用多个线程)。在这种情况下,您的 RS 位码会被编译为本机代码。大多数现代 Android 平台将改用 GPU 或板载 DSP。在这种情况下,您的特定 RS 代码的位码被“编译”成 GPU/DSP 指令,并且 RS 的平台“驱动程序”层会将您的 RS 操作卸载到 GPU/DSP。

这个演讲有一些关于它是如何工作的信息,并希望为您提供一些有用的信息:https ://youtu.be/3ynA92x8WQo

于 2019-01-16T20:03:47.893 回答