首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译renderscript源代码

编译renderscript源代码
EN

Stack Overflow用户
提问于 2014-03-27 10:43:12
回答 1查看 868关注 0票数 1

正如我在上一篇文章(在运行时编译renderscript代码)中提到的,我尝试在运行时编译renderscript代码。正如Kietz所建议的那样,我需要修改所有生成的java类派生的ScriptC类。使我自己的类扩展脚本失败,因为我不能调用这个超类的构造函数。

这段代码片段

代码语言:javascript
复制
public class RuntimeScriptC extends Script {
       private static final String TAG = "RuntimeScriptC";

   protected RuntimeScriptC(int id, RenderScript rs) {            
       super(id, rs);       

   }

给我这个错误:

代码语言:javascript
复制
The constructor Script(int, RenderScript) is undefined

我的下一个想法是将我自己的类添加到renderscript源代码中,并编译它以创建一个新的.jar。我在git上找到了源代码,但不知道如何只构建renderscript包。

编辑:我刚刚发现Script.java的构造函数是包私有的。这就是为什么我不能访问自己类中的构造函数的原因。如果我能够自己编译renderscript源代码,我就可以将自己的类放入包中并访问它。

新问题:在哪里可以找到renderscript源代码以及如何编译它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 19:51:47

RenderScript的源代码可以在android.googlesource.com以及安卓的其他部分找到。如果你想重建安卓或者它的一部分,这里可能是一个很好的起点。

然而,这太过分了。如果不能直接修改ScriptC,只需继承它。这是可能的,因为您需要从ScriptC获得的唯一方法是它的受保护的构造函数。例如,我编写了HackedScriptC,它只将其参数转发给ScriptC()

代码语言:javascript
复制
package com.example.android.rs.extremehax;

import android.content.res.Resources;
import android.renderscript.RenderScript;
import android.renderscript.ScriptC;

public class HackedScriptC extends ScriptC {

    public HackedScriptC(RenderScript rs, Resources resources, int id) {
        // simple passthru to the only constructor that ScriptC_mono uses
        super(rs, resources, id);
    }

}

它现在可以在胶水类中替代ScriptC

代码语言:javascript
复制
package com.example.android.rs.extremehax;
// ...     
public class ScriptC_mono extends HackedScriptC { 
    // otherwise identical glue class...

在您的示例中,您不会调用超级构造函数ScriptC(RenderScript,Resources,int),因为这会调用要重写的internalCreate。相反,调用ScriptC(int,RenderScript)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22685162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档