【发布时间】:2015-08-07 07:39:31
【问题描述】:
背景
我想研究在 Android 上创建 Renderscript 脚本和一般的 Renderscript,在过去的一年里,Android-Studio 成为了谷歌唯一支持用于 Android 应用程序开发的 IDE。
问题
为此,我找到了多个网站,例如:
- https://developer.android.com/guide/topics/renderscript/compute.html#writing-an-rs-kernel
- How to use the Renderscript Support Library with Gradle
- http://developer.android.com/guide/topics/renderscript/compute.html
- https://futurestud.io/blog/how-to-use-the-renderscript-support-library-with-gradle-based-android-projects/
- http://developer.android.com/guide/topics/renderscript/advanced.html
问题是,我看到的所有教程和示例都是针对 Eclipse 的,他们说我需要做的就是在“raw”文件夹中创建一个“rs”文件(也在“src”文件夹中尝试过) ,在“MainActivity.java”文件的同一文件夹中),它将为我自动生成所需的Java文件,前缀为“ScriptC_”。
但这对我不起作用。
我尝试过的
我从我找到的一些示例(用于 Eclipse)中创建了一个名为“julia.rs”的文件。代码如下:
#pragma version(1)
#pragma rs java_package_name(lb.com.myapplication)
float cx;
float cy;
float width;
float height;
float zoom;
int precision;
uchar *color;
void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
float fx = (x + 0.5f) / width * (4.f / zoom) - (2.f / zoom);
float fy = (y + 0.5f) / height * (4.f / zoom) - (2.f / zoom);
float t = 0;
int k = 0;
while(k < precision - 1) {
t = fx * fx - fy * fy + cx;
fy = 2 * fx * fy + cy;
fx = t;
if (fx * fx + fy * fy >= 4) {
break;
}
k++;
}
out->b = color[k*3+0];
out->g = color[k*3+1];
out->r = color[k*3+2];
}
在 java 文件中,我想访问新创建的文件,所以我开始编写“ScriptC”,并希望它能够填充所需的额外字符,但事实并非如此。
例如,我不能使用这段代码:
mScript=new ScriptC_julia(mRS,getResources(),R.raw.julia);
我也尝试为旧版 Android 添加 Renderscript 支持,但这当然没有帮助:
defaultConfig {
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
...
我尝试的另一件事是通过应用程序的上下文菜单使用 New->Folder->RenderScript 文件夹,但随后出现此错误:
Error:Execution failed for task ':app:compileDebugRenderscript'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\AppData\Local\Android\Sdk\build-tools\23.0.0-preview\llvm-rs-cc.exe'' finished with non-zero exit value -1073741515
问题
在 Android-Studio 上创建和运行 Renderscript 脚本的正确方法是什么?
编辑:可悲的是,我又遇到了完全相同的问题,这一次,将 renderscriptTargetApi 设置为 18 并没有帮助。我还用 Renderscript 尝试了另一个项目,here 和 here,但都有相同的问题:
Error:Execution failed for task ':renderscript:compileArmDebugRenderscript'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\android\Sdk\build-tools\23.0.1\llvm-rs-cc.exe'' finished with non-zero exit value -1073741515
我现在添加了一个赏金来一劳永逸地解决这个问题。
【问题讨论】:
-
您正在使用 API 23 预览版。你能用 22 再试一次吗?
-
这个项目已经结束了。我没有调查到底出了什么问题,而是创建了一个新的(使用上面@StephenHines 链接中的分步操作),然后复制了您的 java、布局、菜单和渲染脚本文件。然后修复了一些错误并在 RS 和 Java 中添加了一些代码,以便它实际上可以让您看到分形:drive.google.com/file/d/0B4gY85GI2HEzQTFlbnRrYld1Q1k
-
“软管”如“损坏”。 Android 项目文件损坏在多代开发工具中非常普遍。
-
将 buildTooldVersion 更改为“22.0.1”,将 targetSdkVersion 更改为
-
实际上问题是不同的 - 如果 renderscriptTargetApi 是 21+,以前的构建工具 22.0.01 不起作用。现在构建工具 23.0.0 根本不起作用。另外,我认为你无法收回赏金,即使我(或任何获得它的人)想放弃它。
标签: android eclipse android-studio renderscript