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

时间:2018-03-07 18:33:09

标签: android renderscript

我一直在努力让RenderScript在我的应用上使用TargetSDKVersion 26和minSDKVersion 21在Gradle Sync上出错:

  

错误:任务':app:compileDebugRenderscript'执行失败。   com.android.ide.common.process.ProcessException:使用参数{-O 3 -I / home /执行进程/home/mail929/.android/sdk/build-tools/26.0.2/llvm-rs-cc时出错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

的底部
  

图形功能和类型

     

RenderScript的图形子系统已在API级别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'
}

2 个答案:

答案 0 :(得分:1)

不,Renderscript尚未完全弃用,只有直接在某些OpenGL类型构造的图形功能。由于它或多或少地在OpenGL中使用相同的东西,它被删除了,而你可以用OpenGL交换纹理。

minSdkVersionrenderscriptTargetApibuild.gradle的组合将导致minSdkVersion用于Renderscript目标API。这种方式的工作方式真的很奇怪。除非您绝对需要android.renderscript框架包中的某些内容,否则请将renderscriptSupportModeEnabled设置为true,以使用支持库版本。这也可能有助于解决您所看到的任何问题。如果没有,请尝试从构建日志中提供更多详细信息。

答案 1 :(得分:0)

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

  加载共享库时出现

错误:libncurses.so.5:无法打开共享对象文件:没有这样的文件或目录

我通过在Fedora上安装ncurses-compat-libs来解决这个问题,并且Gradle Sync成功完成