如果不清除缓存,则不会更新Renderscript编译文件

时间:2017-05-19 09:32:19

标签: renderscript

我正在尝试使用NDK中的Renderscript运行只有一个文件main.rs的应用程序。我在三星Galaxy S7 Android 7.0上运行它。

minSdkVersion 23
targetSdkVersion 25
renderscriptTargetApi 23
renderscriptSupportModeEnabled false
renderscriptNdkModeEnabled true

首先运行它完美,但它不会在第二次和随后的启动时更新已编译的Renderscript。所以我修改了RS功能的主体,但在重新安装时它在手机上保持不变。

我在缓存目录中有三个文件:

main.bc
main.o
librs.main.so

对于第一次和后续运行,这些文件具有相同的last modified时间戳。所以它们似乎没有在更新时重新编译。只有删除文件才有助于在代码更改时更新功能。

有什么问题?为什么这些文件没有在代码上更新?

如果您需要更多信息,请发表评论,我会更新问题。

1 个答案:

答案 0 :(得分:0)

RenderScript在第一次运行期间缓存编译。如果.bc文件发生更改,它将/应重新编译.bc文件。

尝试" adb shell setprop debug.rs.default-CPU-driver 1",然后修改代码以查看是否发生了自动重新编译。

如果CPU驱动程序正常工作,则表示三星驱动程序存在使代码缓存无效的错误。