2012-09-10 61 views
4

有谁知道是否有可能将字符串/文件转换为可在运行时使用类似JavaCompiler编译的java源文件。看起来Java 6可以实现这一点,但是我没有看到有人说JavaCompiler在Android中可用。将字符串转换为Java Android中的源代码

基本上我的主要目标是在Android中将字符串或文件文本转换为源代码。有谁知道如何做到这一点?

谢谢!

+1

可能不是,虽然你依赖于你实际上想要完成的事情,但可能会更好地追求脚本。请参阅http://code.google.com/p/android-scripting/ – Hyangelo

+0

似乎我必须下载apk才能做到这一点......有没有办法使用这样的脚本,它不会是否需要下载我可以在我的代码中使用的额外apk? – SpyMachine

回答

2

Android运行Dalvik而不是Java 6. JavaCompiler不包含在标准的Dalvik发行版中,因此您不能使用它。 Dalvik运行时是为嵌入式系统设计的,因此它的动态性较低,即时编译代码是它不应该做的事情之一。

尝试一下Hyangelo建议的操作,或者使用Google for其他脚本库。例如Clojure。 ;)

+0

上面的一些问题^ – SpyMachine

+0

这个库的源代码可用,你应该能够将它包含在你的应用程序中。虽然我找不到任何解释如何做到这一点... –

+0

顺便说一句,类似的问题之前被问:http://stackoverflow.com/questions/5862569/embedding-script-interpreter-in-android-app –

0

你可以做一些先进的事情,并设置一个Web服务来为你编译源代码。该服务将接受java源代码,将其编译为一个dalvik编译类并将其作为二进制返回。 http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

虽然你是不是在手机上编写,这将在运行时编译,一旦插入你的类加载器,可用于执行:

这里描述这个二进制然后可以添加到自定义类加载器。

+0

这是一个非常好的主意,我也想到了它,但不幸的是与服务器的通信不会成为一种选择。不过谢谢。 – SpyMachine

0

技术上可行,但并不容易。如果你看看Terminal IDE,他们会打包所有的工具,从设备上的源代码编译Android字节码。您可以采用类似的方法,将字符串写入磁盘上的文件,编译它,然后使用DexClassLoader从编译的JAR文件或APK中加载类。

相关问题