android.renderscript.RSRuntimeException: 加载 ScriptC 脚本失败。 (android sdk 构建工具 23.0.1)

android.renderscript.RSRuntimeException: Loading of ScriptC script failed. (android sdk build tools 23.0.1)

尝试在不使用支持库的情况下编译 renderscript。 我正在使用 Android Studio 和 android sdk 构建工具 23.0.1(我也有 20 和 23.0.0)。试图为 Samsung galaxy s5 plus 编译它。 (Android 5.0.2 API 21)

inverse.rs 文件位于: /src/main/rs/

在我的 mainactivity.java:

RenderScript rs = RenderScript.create(this.getApplicationContext());
Allocation allocIn;
allocIn = Allocation.createFromBitmap(rs, bitmap);
Allocation allocOut = Allocation.createTyped(rs, allocIn.getType());
ScriptC_inverse inverse = new ScriptC_inverse(rs); //crashes on this line

inverse.forEach_invert(allocIn,allocOut);
rs.finish();
allocOut.copyTo(bitmap);

allocOut.destroy();
allocIn.destroy();
rs.destroy();

inverse.rs:

#pragma version(1)
#pragma rs java_package_name(com.example.dries.myocrtest)

uchar4 __attribute__((kernel)) invert(uchar4 in) {
  uchar4 out = in;
  out.r = 255 - in.r;
  out.g = 255 - in.g;
  out.b = 255 - in.b;
  return out;
}

build.gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.example.dries.myocrtest"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        renderscriptTargetApi 23
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile project(':tesstwo')
    compile project(':fileExplorer')
}

这是我的错误日志:

12384-12384/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.dries.myocrtest, PID: 12384
    android.renderscript.RSRuntimeException: Loading of ScriptC script failed.
            at android.renderscript.ScriptC.<init>(ScriptC.java:82)
            at com.example.dries.myocrtest.ScriptC_inverse.<init>(ScriptC_inverse.java:34)
            at com.example.dries.myocrtest.MainActivity.ocr(MainActivity.java:126)
            at com.example.dries.myocrtest.MainActivity.onOptionsItemSelected(MainActivity.java:86)
            at android.app.Activity.onMenuItemSelected(Activity.java:3030)
            at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:325)
            at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:147)
            at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
            at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:609)
            at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
            at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153)
            at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
            at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948)
            at android.support.v7.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:191)
            at android.widget.AdapterView.performItemClick(AdapterView.java:334)
            at android.widget.AbsListView.performItemClick(AbsListView.java:1531)
            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3667)
            at android.widget.AbsListView.run(AbsListView.java:5585)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:6066)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)

将 targetSdkVersion 设置为 S5 支持的级别,因为 23 将导致它只能在 API 级别 23+ 设备上运行。我们不使用 minSdkVersion。我们在为 RS 编译时使用您的 targetSdkVersion。