在Android Java应用程序中嵌入Groovy

5

基本上,我需要运行Groovy脚本来操作Java对象,而GroovyShell / GroovyScriptEngine似乎是最好的方法。是否可以将Groovy嵌入到Java应用程序中?我尝试将groovy-all-1.8.2.jar放置在我的Android Java应用程序的libs文件夹中,引用它然后编译,但我得到了一堆错误。

我该如何做?

6个回答


2
我不相信这会起作用。Groovy将脚本转换为字节码,而Dalvik字节码与Groovy所期望的Java字节码不同,我认为它会遇到问题...
几年前的Discobot已经被重新启动了,取得了很大进展,因此未来有希望。
但那对你今天没有帮助...

嗯,有一半是正确的;D groovy正在创建Java字节码!但在Dalvik VM上,Java字节码无法运行。 - Angel O'Sphere
这不就是我说的吗(用迂回的方式)?;-) - tim_yates
嗯,是的,但当我在打我的“更正”时,我看到:“Groovy 依赖于 Java 字节码”或类似的东西。但也许我看错了;D 那我很抱歉。 - Angel O'Sphere
Dalvik字节码不是直接从源代码编译而来,它是从Java字节码转换而来(构建过程为:javac + dx)。我认为可以将Groovy编译成字节码,然后将其转换为Dalvik。当然,如果Groovy执行了太多的运行时操作,则即使转换为Dalvik后也无法正常工作。 - broot

2

1
这是一个你想要实现的示例。https://github.com/melix/grooidshell-example 由于它需要在 Android 设备上首先编译成类文件,然后转换为 dex,所以速度相当慢,但它能够实现你想要的功能。

1

自从09/2011年以来,Discobot似乎卡住了。最后的结果似乎是:大部分功能都能正常工作,但速度非常慢。

Groovy 2.0现在已经发布,Guillaume Laforge(内部人士)表示它可能会有所帮助 - 特别是由于Groovy 2.0的@CompileStatic新功能。从那时起,Groovy 2.0.1...2.0.4,静态编译得到了很多错误修复

但目前,在Groovy的官方网站上,Android没有被讨论,似乎没有人真正负责(请参见wikiwiki)。


是的,他们承诺支持安卓,但仍然没有任何进展 :( - ruX

0
在Android上运行脚本的更好选择是SnapScript。它不依赖于字节代码,并且在Android上得到充分支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接