我想從用戶那裏獲得一行Java代碼並在Android中執行它。例如:是否可以在運行時在Android中執行Java代碼字符串?
String strExecutable = " int var; var = 4 + 3"
Object obj = aLibrary.eval(strExecutable);
這不是java腳本,我想運行一個java代碼。
可能嗎?如果是的話如何?
我研究過像this鏈接。但他們是關於JVM而不是Android Dalvik的問題。
我想從用戶那裏獲得一行Java代碼並在Android中執行它。例如:是否可以在運行時在Android中執行Java代碼字符串?
String strExecutable = " int var; var = 4 + 3"
Object obj = aLibrary.eval(strExecutable);
這不是java腳本,我想運行一個java代碼。
可能嗎?如果是的話如何?
我研究過像this鏈接。但他們是關於JVM而不是Android Dalvik的問題。
你可以嘗試這樣的事情:
// Code Execute, Khaled A Khunaifer, 27 March 2013
class CodeExcute
{
public static void execute (String[] commands, String[] headers)
{
// build commands into new java file
try
{
FileWriter fstream = new FileWriter("Example.java");
BufferedWriter out = new BufferedWriter(fstream);
out.write("");
for (String header : headers) out.append(header);
out.append("class Example { public static void main(String args[]) { ");
for (String cmd : commands) out.append(cmd);
out.append(" } }");
out.close();
}
catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
}
// set path, compile, & run
try
{
Process tr = Runtime.getRuntime().exec(
new String[]{ "java -cp .",
"javac Example.java",
"java Example" });
}
catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
}
}
}
你可以試試BeanShell!這是超級簡單,也適用於Android。只需用jar庫構建你的應用程序。
import bsh.Interpreter;
private void runString(String code){
Interpreter interpreter = new Interpreter();
try {
interpreter.set("context", this);//set any variable, you can refer to it directly from string
interpreter.eval(code);//execute code
}
catch (Exception e){//handle exception
e.printStackTrace();
}
}
但要小心!在生產應用程序中使用此應用程序可能會帶來安全風險,特別是如果您的應用程序與用戶數據/文件交互時,尤其如此。
Android是一個操作系統。您可以使用JAVA – Blackbelt 2013-03-27 10:39:17
@blackbelt使應用程序爲Android當我們說的Android,我們通常指的Dalvik及其庫 – breceivemail 2013-03-27 11:12:54
我不知道任意的Java代碼,但[這個問題](http://stackoverflow.com/questions/2226863/ whats-a-good-library-for-parsing-mathematical-expressions-in-java)and [this one](http://stackoverflow.com/questions/13747069/is-there-a-mathematical-expression-parsing-圖書館在Android)似乎相似,如果要求只是簡單的數學。 [MVEL](http://mvel.codehaus.org)應該處理你的示例字符串。 – ig0774 2013-03-27 11:29:25