标签: android-rendering

如果renderscriptTargetApi> 20,则Renderscript不生成librs.xx.so

我正在使用renderscript进行音频dsp处理.它运行良好,直到我决定将renderscriptTargetApi版本从19提升到24,试图以向后兼容的方式使用更新的renderscript API.

编译没有问题,但在运行时,logcat会显示这样的错误

05-31 19:40:23.097 8661-8734/com.example.audio.test E/RenderScript:无法打开共享库(/data/user/0/com.example.audio.test//lib/librs.xx .so):dlopen失败:未找到库"libRSSupportIO.so"

如果我有renderscriptTargetApi19或20,我的apk有librs.xx.so没有错误.如果我将它碰到21,23或24,librs.xx.so则不会生成,因此我有此运行时错误.

我正在通过NDK使用renderscript,即C++.也使用CMake.我没有找到通过NDK使用renderscript支持库的指令.所有指令都假定支持库是通过Java使用的.

这是来自 build.gradle

    ndk {
        abiFilters 'armeabi-v7a', 'x86'
    }

    renderscriptTargetApi 24
    renderscriptSupportModeEnabled true
    renderscriptNdkModeEnabled true
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt 具有

add_library (dsp SHARED
  ${SRC_PATH}/dsp.cpp
  ${SRC_RS_PATH}/xx.rs ${SRC_RS_GENERATED_PATH}/ScriptC_xx.cpp)

target_compile_options(dsp PRIVATE 
  -std=c++11 -stdlib=libc++ -fno-rtti -fexceptions -Ofast)

target_link_libraries(dsp RScpp_static dl ${log-lib})
Run Code Online (Sandbox Code Playgroud)

这是 xx.rs

#pragma version(1)
#pragma rs java_package_name(com.example.audio)
#pragma rs_fp_relaxed

float RS_KERNEL my_kernel(float in, uint32_t x) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这就是从C++调用内核的方式

sp<RS> rs = new RS();
rs->init(app_cache_dir);

sp<const Element> e …
Run Code Online (Sandbox Code Playgroud)

android android-ndk renderscript android-support-library android-rendering

14
推荐指数
0
解决办法
408
查看次数

Android UI渲染时间

我在Android Vital中收到一条警告,提示我的UI渲染时间太慢。

正如他们在重要页面上解释的那样:

冻结的UI框架:
每天会话的百分比,在此期间,用户体验超过0.1%的框架且渲染时间超过700毫秒。每日会话是指在设备上使用您的应用的一天。Google使用UI Toolkit框架收集应用程序渲染的每个帧的渲染时间,而不是直接使用OpenGL。学到更多

我不明白如何从这个问题开始。
我怀疑自己的活动,但似乎没有什么奇怪的。

在此处输入图片说明

android ui-thread android-anr-dialog google-console-developer android-rendering

5
推荐指数
0
解决办法
446
查看次数