4

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

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

谢谢!

4

3 回答 3

2

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

试试 Hyangelo 的建议,或 Google 的其他脚本库。以 Clojure 为例。;)

于 2012-09-10T20:47:52.413 回答
0

您可以做一些高级的事情并设置一个 Web 服务来为您编译源代码。该服务将接受 java 源代码,将其编译为 dalvik 编译类并将其作为二进制文件返回。

然后可以将此二进制文件添加到自定义类加载器中,如下所述:http ://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

虽然您没有在手机上编译,但它会在运行时编译,并且一旦插入到您的类加载器中,就可以执行了。

于 2012-09-10T20:53:49.637 回答
0

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

于 2012-09-10T22:43:57.007 回答