在Android的运行时执行嵌入Java的Groovy脚本

Vol*_*ort 10 java groovy android

从版本2.4开始,Groovy支持Android.我想在我的Android应用程序中运行嵌入Java的Groovy脚本.

本网站解释说这是可能的:http://melix.github.io/blog/2014/06/grooid2.html

适应Groovy语言的困难之一是,正如我们所说,Groovy是一种高度动态的语言.它的一个功能是在运行时执行脚本.那么如果我们想在设备上键入Groovy脚本并直接在其上执行呢?可能吗?事实上,是的,有可能,因为你遵循这个过程:

您可以拥有一个用Groovy编写的应用程序,但最终,一旦应用程序运行,您就拥有了要执行的Groovy源代码.然后它需要编译类,直接在设备上调用dex,将结果打包到本地文件系统上的jar文件中,然后使用特殊的类加载器加载它.那么为什么这是可能的,这个过程非常复杂,不是直截了当的,但更重要的是,它非常缓慢.

我很兴奋,无论速度如何,这确实是可能的.这里有一个示例项目:https://github.com/melix/grooidshell-example.

不幸的是,我真的不明白这个过程.我有一个相当小的项目,但我不确定在哪里看.

你能指出我在Android的运行时执行嵌入Java的Groovy脚本的正确方向吗?

bla*_*rag 5

请仔细阅读https://github.com/melix/grooidshell-example/blob/master/GroovyDroid/src/main/java/me/champeau/groovydroid/GrooidShell.java

这是创建一个DexFile(第71行)实例,在编译中添加字节码后处理器(第73行)以获取类的生成字节并将其转换为dex格式(第76行)并最终将其存储在dexfile实例中(行77).然后得到dalvik字节码(第91行),使用DexClasLoader(第136行)加载dalvik/dex类(第138行).