是否可以在 Android SDK 23+ 上使用 RenderScript

Is it possible to use RenderScript on Android SDK 23+

我一直在努力让 RenderScript 使用 TargetSDKVersion 26 和 minSDKVersion 21 在我的应用程序上运行,在 Gradle 同步时出错:

Error:Execution failed for task ':app:compileDebugRenderscript'. com.android.ide.common.process.ProcessException: Error while executing process /home/mail929/.android/sdk/build-tools/26.0.2/llvm-rs-cc with arguments {-O 3 -I /home/mail929/.android/sdk/build-tools/26.0.2/renderscript/include/ -I /home/mail929/.android/sdk/build-tools/26.0.2/renderscript/clang-include/ -p /home/mail929/Code/Android/SmartME/app/build/generated/source/rs/debug -o /home/mail929/Code/Android/SmartME/app/build/generated/res/rs/debug/raw -target-api 21 /home/mail929/Code/Android/SmartME/app/src/main/rs/combine.rs}

最后我在documentation page的底部注意到:

Graphics Functions and Types

The graphics subsystem of RenderScript was removed at API level 23.

这是否意味着我根本无法使用 RenderScript?如果可以,有什么好的选择吗?

这是我的完整 build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "edu.marquette.mcw.smartme"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 4
        versionName "2rc1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        renderscriptTargetApi 18
        renderscriptSupportModeEnabled false

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.0.0'
    compile 'com.android.support:cardview-v7:26.0.0'

    testCompile 'junit:junit:4.12'
}

不,Renderscript 尚未完全弃用,只是直接在某些 OpenGL 类型构造上运行的图形功能。由于它或多或少地做着 OpenGL 中可用的相同事情,它被删除了,取而代之的是您可以与 OpenGL 交换纹理。

minSdkVersionrenderscriptTargetApi 在您的 build.gradle 中的组合将导致 minSdkVersion 用于 Renderscript 目标 API。这种工作方式可能会变得非常奇怪。除非你绝对需要 android.renderscript 框架包中的某些东西,否则通过将 renderscriptSupportModeEnabled 设置为 true 来使用支持库版本。这也可能有助于解决您遇到的任何问题。如果没有,请尝试从构建日志中提供更多详细信息。

好吧,我实际上决定手动 运行 命令以查看错误并收到以下错误:

error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

我通过在 Fedora 上安装 ncurses-compat-libs 解决了这个问题,Gradle 同步成功完成