如何在Android Studio上创建Renderscript脚本并使其运行?

时间:2015-08-07 07:39:32

标签: android eclipse android-studio renderscript

背景

我想研究一下在Android和Renderscript上创建Renderscript脚本,在过去的一年里,Android-Studio成为Google支持Android应用开发的唯一IDE。

问题

为此,我发现了多个网站:

事实上,我所见过的所有教程和示例都是针对Eclipse的,他们说我需要做的就是创建一个" rs"文件里面的" raw"文件夹(也在" 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文件中,我想访问新创建的文件,所以我开始编写&#34; ScriptC&#34;,并期望它填充所需的额外字符,但它没有。

我不能使用这段代码:

mScript=new ScriptC_julia(mRS,getResources(),R.raw.julia);

我还试图为较旧的Android版本添加Renderscript支持,但这当然没有帮助:

defaultConfig {
    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true
    ...

我尝试过的另一件事是通过应用的上下文菜单使用New-&gt; Folder-&gt; 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,herehere的其他项目,但两者都有相同的问题:

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

我现在一劳永逸地为这个问题添加了一笔赏金。

3 个答案:

答案 0 :(得分:3)

您的项目成功构建所需的唯一修改是将renderscriptTargetApi值从22更改为18.否则Renderscript脚本编译会生成使用64位ABI的中间文件,构建过程无法与预编译的中间件链接22.0.01构建使用32位ABI的工具。

更新:截至2015年9月,新版本的构建工具(23.0.0)无法与Renderscript支持库一起使用,因此您必须禁用它或将工具还原为22.0.01。

答案 1 :(得分:1)

使用内置renderscript构建android应用程序与构建普通的Android应用程序完全不同。很高兴看到你最终有这个工作:) 对于其他想要玩源的人来说,可以在github上找到它: https://github.com/carlemil/JuliaLiveWallpaper 和我工作的另外两个rs项目: https://github.com/carlemil/alw.plasmahttps://github.com/carlemil/alw.eld 如果你想看到他们&#34;在行动&#34;我让他们在谷歌播放: https://play.google.com/store/apps/developer?id=Erbsman

答案 2 :(得分:1)

这已在gradle-plugin 2.1.0和Build-Tools 23.0.3中修复。 请使用以下代码:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    ...
}

更新: 如果出现错误&#34; Gradle版本2.10&#34;出现,不要改变

classpath 'com.android.tools.build:gradle:2.1.0'

相反,将Project \ gradle \ wrapper \ gradle-wrapper.properties文件的distributionUrl字段更新为

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

并更改文件&gt;设置&gt;构建,执行,部署&gt;构建工具&gt;根据{{​​3}},Gradle&gt; Gradle 使用默认gradle包装