是否可以在 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 交换纹理。
minSdkVersion
和 renderscriptTargetApi
在您的 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 同步成功完成
我一直在努力让 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 交换纹理。
minSdkVersion
和 renderscriptTargetApi
在您的 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 同步成功完成