Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译renderscript源代码_Java_Android_Git_Renderscript - Fatal编程技术网

Java 编译renderscript源代码

Java 编译renderscript源代码,java,android,git,renderscript,Java,Android,Git,Renderscript,正如我在上一篇文章()中提到的,我尝试在运行时编译renderscript代码。 正如Kietz所建议的那样,我需要修改ScriptC类,所有生成的java类都是从该类派生的。 创建自己的扩展脚本的类失败,因为我无法调用这个超类的构造函数 这段代码 public class RuntimeScriptC extends Script { private static final String TAG = "RuntimeScriptC"; protected Runtime

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

这段代码

public class RuntimeScriptC extends Script {
       private static final String TAG = "RuntimeScriptC";

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

   }
给我这个错误:

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

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


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

可以在找到renderscript的源代码,以及Android的其他源代码。如果你想重建Android或其一部分,这可能是一个很好的起点

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

现在可以在glue类中将其替换为
ScriptC

package com.example.android.rs.extremehax;
// ...     
public class ScriptC_mono extends HackedScriptC { 
    // otherwise identical glue class...

在您的情况下,您不会调用超级构造函数
ScriptC(RenderScript,Resources,int)
,因为它会调用要覆盖的
internalCreate
。而是调用
ScriptC(int,RenderScript)

您最终重建了RenderScript吗?只重建RenderScript部分并不容易。我必须编译完整的android软件包,所以这是不可能的。在internalCreate中,有一个openRawResource函数。openRawResource是Resource类的一个函数,我们创建了自己的资源类,并将其提供给ScriptC的构造函数。openRawResource现在指向一个我们自己选择的目录,在那里我们可以添加/更改.bc文件。您有没有可能共享您的源代码?我对你的项目结果非常感兴趣,我不知道我被允许分享我们的代码,因为这是一篇论文。我会问公司我可以做什么,不可以做什么,并会尽快向你汇报此事!很抱歉回复时间太长。但是我们已经在上发布了源代码,并获得了麻省理工学院的许可。该项目尚未完全调试,但应该相当稳定。关于如何设置renderscript编译服务器以及如何将应用程序与之连接,很快就会有自述文件。我认为您希望看到的是“src/com/denayer/ovsr/MyResources.java”文件及其在“src/com/denayer/ovsr/RsScript.java”中的实现(RenderScriptTemplate函数)。如果您想了解更多信息,请随时回复或通过许可证中的电子邮件发送给我。
package com.example.android.rs.extremehax;
// ...     
public class ScriptC_mono extends HackedScriptC { 
    // otherwise identical glue class...