我刚刚在Android Studio中启动了renderscript.当我创建.rs文件时,不会生成ScriptC_DS类和.bc文件.我已经读过,一旦.rs文件被保存,它应该是自动生成的,所以我不确定出了什么问题.
DS.rs
#pragma version(1)
#pragma rs java_package_name(com.example.DSing)
void root(){
}
的build.gradle
 apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
    applicationId "com.example.DSing"
    minSdkVersion 16
    targetSdkVersion 20
    versionCode 1
    versionName "1.0"
    renderscriptTargetApi 18
    renderscriptSupportMode true
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
MainActivity类目前没有任何内容(除了自动生成的默认值),但是当我尝试在内部创建私有ScriptC_DS时,我收到一条消息"无法解析符号ScriptC_DS". 主要活动
package com.example.DSing
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v8.renderscript.*;
public class Main extends Activity {
@Override
protected …我只是想在我的应用程序中使用RenderScript的ScriptIntrinsicBlur,我已经添加了renderscript.v8.jar(在android支持lib v8中)以支持17以下api但它在此行崩溃(在api <17这种情况下它在4.2上工作正常或更高) :
        RenderScript rs = RenderScript.create(getApplicationContext());
和Exception输出
 java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:299)
        at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
        at java.lang.Thread.run(Thread.java:856)
 Caused by: android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn't load RSSupport: findLibrary returned null
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:945)
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:982)
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:968)
任何人都知道我该怎么处理这个?
如何正确使用RenderScript内在函数.
如图所示http://android-developers.blogspot.com/2013/08/renderscript-intrinsics.html
//Assuming my original Bitmap is "bm"
Bitmap outputBitmap = Bitmap.createBitmap(bm.getHeight(),
bm.getWidth(), Config.ARGB_8888);
RenderScript rs = RenderScript.create(getApplicationContext());
ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur
.create(rs, Element.U8_4(rs));
Allocation tmpIn = Allocation.createFromBitmap(rs, bm);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
theIntrinsic.setRadius(25.f);
theIntrinsic.setInput(tmpIn);
theIntrinsic.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
bm.recycle();
rs.destroy
我在初始布局上得到了outputBitmap的一些黑色区域,但是在用户滚动HorizontalScrollView的Scroller之后,它会被填充,使得drawable"刷新"本身.
我也得到这个错误(如果它有帮助):
09-01 05:54:11.246: E/RenderScript(11423): rsAssert failed: !mElements.size(), in frameworks/rs/rsElement.cpp at 375
关于正确使用RS的任何建议都会有所帮助.

我正在尝试将Android 4.4移植到Android 5.0.我的应用程序使用Renderscript.目前,renderscript应用程序非常简单
#pragma version(1) // RenderScript version, 1 is the only one for now
#pragma rs java_package_name(com.example.andriod.rs_android_5) // our package
#pragma rs_fp_relaxed
uint16_t *output;
const uint16_t *input;
void __attribute__((kernel)) encrypt(uint16_t In, uint32_t x, uint32_t y){
    output[in] = x*input[in]; 
}
我的build.gradle看起来像这样:
apply plugin: 'com.android.application'
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.example.andriod.rs_android_5"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        renderscriptSupportModeEnabled true
        renderscriptTargetApi 21
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies …我正在使用RenderScript和Allocation从Android Camera2 API获取YUV_420_888帧,但是一旦我从分配中复制byte [],我只从组成帧的3个平面接收Y平面,而U和V平面值在字节[]中设置为0.我试图模仿previos相机API中的onPreviewframe,以便在应用程序处理相机帧时执行.我的分配创建如下:
Type.Builder yuvTypeBuilderIn = new Type.Builder(rs, Element.YUV(rs));
    yuvTypeBuilderIn.setX(dimensions.getWidth());
    yuvTypeBuilderIn.setY(dimensions.getHeight());
    yuvTypeBuilderIn.setYuvFormat(ImageFormat.YUV_420_888);
    allocation = Allocation.createTyped(rs, yuvTypeBuilderIn.create(),
            Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);
而我的脚本看起来像:
#pragma version(1)
#pragma rs java_package_name(my_package)
#pragma rs_fp_relaxed
rs_allocation my_frame;
android yuv renderscript android-camera android-5.0-lollipop
我试图将Renderscript支持库包含到我的项目中.我收到以下错误.
android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn't load rsjni: findLibrary returned null
我没有使用任何Renderscript jar文件,我试图通过Gradle使用它.
这是我的Gradle.build文件
顶层
buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.2.3'
}
}
ext {
compileSdkVersion="Google Inc.:Google APIs:22"
buildToolsVersion="23.0.1"
playStoreMinSdkVersion=16
amazonStoreMinSdkVersion=8
targetSdkVersion=22
versionCode=20
versionName="3.3.0"
runProguard=true
zipAlign=true
proguardConfiguration='../proguard.config'
}
allprojects {
repositories {
    jcenter()
}
}
特定应用
defaultConfig {
    applicationId "**REMOVED**"
    //noinspection GroovyAssignabilityCheck
    targetSdkVersion rootProject.ext.targetSdkVersion
    //noinspection GroovyAssignabilityCheck
    versionCode rootProject.ext.versionCode
    //noinspection GroovyAssignabilityCheck
    versionName rootProject.ext.versionName
    renderscriptTargetApi 23
    renderscriptSupportModeEnabled true
}
我尝试并在stackoverflow上找到可能的解决方案的一切都无法正常工作.我也将这个包含在我的proguard配置中
#RenderScript
-keepclasseswithmembernames class * { …android renderscript android-support-library android-gradle-plugin
更新到构建工具25.0.2后,我收到以下错误(23.0.2工作正常):
Error:target API level '25' is out of range ('11' - '24')
Error:Execution failed for task ':app:compileDevDebugRenderscript'.
> com.android.ide.common.process.ProcessException: Error while executing process /usr/local/opt/android-sdk/build-tools/25.0.2/llvm-rs-cc with arguments {-O 3 -I /usr/local/opt/android-sdk/build-tools/25.0.2/renderscript/include/ -I /usr/local/opt/android-sdk/build-tools/25.0.2/renderscript/clang-include/ -p /<redacted>/app/build/generated/source/rs/dev/debug -o /<redacted>/app/build/generated/res/rs/dev/debug/raw -target-api 25 /<redacted>/app/src/main/rs/<redacted>.rs}
我在app/build.gradle中有以下内容:
android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 25
        renderscriptTargetApi 21
        renderscriptSupportModeEnabled false
        ...
    }
    ...
}
正如您所看到的,renderscriptTargetApi设置为21,但新的构建工具强制它为25.由于依赖于需要关闭它的库,我无法打开支持模式.
我是否应该恢复构建工具23.0.2并等待修复或是否有任何变通方法可以让renderscript使用最新的构建工具?
如何在由系统证书签名的应用程序中使用自定义RenderScript脚本?
LogCat 输出:
E/RenderScript: Failed loading RS driver: dlopen failed: cannot locate symbol "_ZN7android12renderscript15RsdCpuReference6createEPNS0_7ContextEjjPFPKNS1_9CpuSymbolES3_PKcEPFPNS1_9CpuScriptES3_PKNS0_6ScriptEEPFPN4llvm6ModuleEPN3bcc8RSScriptESK_SK_EPFS8_S8_jES8_" referenced by "/system/vendor/lib/libRSDriver_adreno.so"...
E/RenderScript: Failed to load runtime libRSDriver_adreno.so, loading default
W/EventThread: type=1400 audit(0.0:200): avc: denied { execute } for path="/data/user_de/0/[packageName]/code_cache/com.android.renderscript.cache/librs.rgb2yuv.so" dev="mmcblk0p25" ino=65890 scontext=u:r:system_app:s0 tcontext=u:object_r:system_app_data_file:s0 tclass=file permissive=0
W/EventThread: type=1300 audit(0.0:200): arch=40000028 syscall=192 per=800008 success=no exit=-13 a0=9aa80000 a1=6c0 a2=5 a3=12 items=0 ppid=336 ppcomm=main auid=4294967295 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=(none) ses=4294967295 exe="/system/bin/app_process32" subj=u:r:system_app:s0 key=(null)
W/auditd: type=1323 audit(0.0:200): fd=120 flags=0x12
W/auditd: type=1327 audit(0.0:200): proctitle="[packageName]"
W/auditd: …android permission-denied android-source renderscript android-permissions
我有两个图像饱和滤波器的实现.一个用Java,一个用Renderscript.实际上我的nexus 4设备的渲染速度较慢,它怎么样?
Java实现:
public final void Saturation(Bitmap canvas, int saturation, boolean accumulate, int imageNumber)
{
    int height = canvas.getHeight();
    int width = canvas.getWidth();
    int[] pixels = new int[height*width];
    int[] resultPixels = new int[height*width];
    canvas.getPixels(pixels, 0, width, 0, 0, width, height);
    if (!accumulate)
    {
        for (int i = 0; i < pixels.length; i ++)
        {
            int red = Color.red(pixels[i]);
            int green = Color.green(pixels[i]);
            int blue = Color.blue(pixels[i]);
            double t = (double)red * 0.11 + (double)green * 0.59 + (double)blue * 0.3; …我在gradle文件中使用支持库中的渲染脚本.
  renderscriptTargetApi 22
  renderscriptSupportModeEnabled true
添加这两行后,我收到此错误
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
UNEXPECTED TOP-LEVEL EXCEPTION:com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException:    
org.gradle.process.internal.ExecException: Process 'command 'C:\Program       
 Files\Java\jdk1.8.0_25\bin\java.exe'' finished with non-zero exit value 2