从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脚本的正确方向?
答案 0 :(得分:5)
创建一个DexFile(第71行)实例,在编译中添加字节码后处理器(第73行)以获取类的生成字节并将其转换为dex格式(第76行)并最终存储在dexfile实例中(第77行)。然后获取dalvik字节码(第91行),使用DexClasLoader(第136行)加载dalvik / dex类(第138行)。