我已尝试在Android上使用Janino上的内容并得出结论,他们根本无法在Dalvik VM中运行。
所以我只想问一个简单的问题:在 Android 上,是否可以在运行时编译包含代码的字符串,以便在应用程序中使用。如果是这样,是否有任何图书馆可以让我这样做和/或你能分享一个如何做的代码示例吗?
对于(一个非常简单的)示例,如果我有一个包含以下内容的String对象:
public class Adder{
int x;
int y;
public Adder(int x,int y) {
this.x = x;
this.y = y;
}
public int add() { return x+y;}
}
作为一个巨大的弦线。有没有办法可以处理它来创建Adder对象的实例,所以我可以通过Reflection API调用add()
方法?
修改 我尝试了beanhell解释,但事实证明它太慢了。我正在寻找一些更快的东西,就像Janino
答案 0 :(得分:9)
ImagePlayground是一款开源Android应用,使用Dexmaker和自定义编程语言完成此操作。
答案 1 :(得分:7)
你可以看看dexmaker:https://github.com/crittercism/dexmaker
它似乎是Android友好的等同于ASM或cglib;它生成.dex文件而不是.class文件。
答案 2 :(得分:2)
基本上你需要一个可以编程调用的Java / Dalvik编译器,类似于Java的javax.tools。简短的回答是,目前不可能。