繁体   English   中英

如何在Android应用中运行用户提供的任意代码?

[英]How to run user-provided, arbitrary code in an android app?

我正在编写的应用程序将需要采用用户定义的代码(该语言不是特别重要,因为用户永远不会看到该语言,用户将使用视觉脚本之类的东西)并运行该代码。 该代码将需要访问用Java编写的库,并创建变量等。 用户提供的代码将与完整程序一样复杂。

我一直在寻找解决此问题的方法。 到目前为止,我在Java,反射,javax.script,JavaCompiler,编写我自己的解释器等中发现了几种不同的方法。 根据我阅读的内容,反射可能无法正常工作,根据android包索引,android没有javax.script或JavaCompiler,但是有些项目将Rhino和V8移植到android,我不敢写一个解释器,但是将在必要时。

我想知道的是,我是否朝着正确的方向前进? 解决此问题的最佳方法是什么?

如果语言不重要,则可以尝试使用Javascript。 检查: http : //developer.android.com/reference/android/webkit/WebView.html#evaluateJavascript(java.lang.String,android.webkit.ValueCallback)

您可以使用addJavascriptInterface方法公开所有必需的系统功能(例如,控制振动)。 这使您可以将对系统的访问限制为仅公开的方法。

另一个选择(可能更好)是使用您自己的解释器。 无论如何,您将创建所有对象以允许可视化脚本,只需定义与每个对象相对应的java调用即可。 这样,您可以防止用户运行任意代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM