【问题标题】:RSRuntimeException: Loading of ScriptC script failed (build tools 19.0.2)RSRuntimeException:加载 ScriptC 脚本失败(构建工具 19.0.2)
【发布时间】:2014-02-26 18:11:21
【问题描述】:

这是我的全部输出:

02-26 09:55:50.410      625-640/com.vsco.cam E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:299)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
            at java.util.concurrent.FutureTask.run(FutureTask.java:239)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:841)
     Caused by: android.renderscript.RSRuntimeException: Loading of ScriptC script failed.
            at android.renderscript.ScriptC.<init>(ScriptC.java:61)
            at android.support.v8.renderscript.ScriptCThunker.<init>(ScriptCThunker.java:39)
            at android.support.v8.renderscript.ScriptC.<init>(ScriptC.java:62)
            at com.vsco.cam.utility.ScriptC_processing.<init>(ScriptC_processing.java:41)
            at com.vsco.cam.effects.EffectProcessor.initialize(EffectProcessor.java:67)
            at com.vsco.cam.LoadingAsyncTask.doInBackground(LoadingAsyncTask.java:24)
            at com.vsco.cam.LoadingAsyncTask.doInBackground(LoadingAsyncTask.java:16)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:841)

这是我的 build.gradle 文件的一部分:

defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        renderscriptTargetApi 19
        renderscriptSupportMode=true
    } 

在将我的构建工具更新到 19.0.2 之前,我收到了针对每个错误的 rs,该错误已通过最新的构建工具版本 (https://code.google.com/p/android/issues/detail?id=64110) 得到修复。现在我完全不知道为什么它不能在非 4.4 手机(需要向后兼容的手机,也就是支持库)上运行。这与每个 rs 的问题是否相同,还是我只是遗漏了什么?

似乎在 ScriptC.java 文件中失败了:

protected ScriptC(RenderScript rs, Resources resources, int resourceID) {
        super(0, rs);
        int id = internalCreate(rs, resources, resourceID);
        if (id == 0) {
            throw new RSRuntimeException("Loading of ScriptC script failed.");
        }
        setID(id);
    }

ScriptC_processing: 41:

 public  ScriptC_processing(RenderScript rs, Resources resources, int id) {
        super(rs, resources, id);
        __ALLOCATION = Element.ALLOCATION(rs);
        __SCRIPT = Element.SCRIPT(rs);
        __U32_2 = Element.U32_2(rs);
        __SAMPLER = Element.SAMPLER(rs);
        __F32_2 = Element.F32_2(rs);
        __I32 = Element.I32(rs);
        __F32 = Element.F32(rs);
        __U8_4 = Element.U8_4(rs);
    }

编辑:这里似乎设置了 id:

protected ScriptC(RenderScript rs, Resources resources, int resourceID) {
    super(0, rs);

    if (rs.isNative) {
        RenderScriptThunker rst = (RenderScriptThunker)rs;
        ScriptCThunker s = new ScriptCThunker(rst, resources, resourceID);
        mT = s;
        return;
    }

    int id = internalCreate(rs, resources, resourceID);
    if (id == 0) {
        throw new RSRuntimeException("Loading of ScriptC script failed.");
    }
    setID(id);
}

【问题讨论】:

  • 我看到了,但是在哪里设置?
  • 为什么这只发生在非 4-4 设备上?这看起来像是一个支持库问​​题。
  • 它没有在您包含在问题中的代码中设置。看看ScriptC_processing.java:41
  • 添加到上面的原始问题中。
  • 你不应该使用 19 的 renderscriptTargetAPI。支持库只能是 18。

标签: android renderscript build-tools


【解决方案1】:

感谢 Stephen Hines 的评论,这是因为我的目标 api 设置为 19。

【讨论】:

  • 它实际上与位码编码无关。问题在于支持库本身(以及它如何选择加载位码/脚本)。如果您以 API 19 为目标,我们会嵌入一个标头,说明它是 19。然后支持库中的 Java/native 代码处理不当。希望我们将来可以更明确地说明此错误,但所有文档都专门调用 API 17 来使用支持库。
  • 感谢您的澄清。我已经更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2019-10-31
  • 2018-10-08
  • 1970-01-01
相关资源
最近更新 更多