【问题标题】:Groovy, Scala, Clojure, etc scripts in AndroidAndroid 中的 Groovy、Scala、Clojure 等脚本
【发布时间】:2014-01-05 16:30:42
【问题描述】:

我正在开发一些用 Java 编写的表单和报表生成器,它们也可以在 Android 上运行。至少是表格和报告执行者。用户可以输入简单的 groovy 脚本,这些脚本可以更改简单的变量。现在我的问题是 groovy 不能真正在 Android 上运行。是我用什么方式代替 Groovy 的另一种语言。 要求 : - 该语言应在 Java 中编译和执行 - 向脚本传递和读取变量 - 生成的字节码也应该在 Android 上运行,或者最终直接在 Android 中编译和执行

【问题讨论】:

  • Scala 在 Android 中工作,但我知道的用法是最终的 apk 文件可以在 Scala 中构建,或者一些 Scala 库可以在 Java Android 项目中使用。我不知道类似脚本的代码是否也有效。
  • @tim_yates 该库一直被扔掉,它不可嵌入或不可用于集成。

标签: java android scala groovy clojure


【解决方案1】:

除了 tim 的变体 (SL4A),还有几个用于现有脚本语言的 java vm。

要小心,不是每个都能满足你的目的,因为 Android 没有 JVM,它有 Dalvik VM,它的工作方式不同,并且打包和优化 java 字节码,当一些 JVM 脚本语言依赖于动态类文件编译和执行。

如果您的任务很简单,请考虑使用 Lua。它是一种极其轻量级的脚本语言,它有 2 个可工作的纯 Java vm 实现,将在 android 上运行:

  1. http://sourceforge.net/projects/luaj/
  2. http://code.google.com/p/kahlua/

【讨论】:

    【解决方案2】:

    Groovy 2.4.0 版将支持 Android。 在我写这篇文章的时候,当前版本是 2.3,并且还没有 2.4 的公开测试版,但是您现在可以通过构建这样的快照来尝试:

    $ git clone https://github.com/groovy/groovy-core
    $ cd groovy-core
    $ ./gradlew clean dist 
    

    要包含在您的 Android Studio 项目中的生成库将是 target/libs/groovy-test-2.4.0-SNAPSHOT-grooid.jar。 然后你需要修改你的 gradle.build 文件以包含 Groovy 支持;该系统看起来仍处于早期阶段,因此请参阅此页面了解更多信息:http://melix.github.io/blog/2014/06/grooid.html

    【讨论】:

    • 但这是对运行时脚本的支持还是仅用于语言的编译时使用。
    • 如您在此处看到的:melix.github.io/blog/2014/06/grooid2.html 您也可以编写运行时脚本,尽管速度很慢
    • 非常缓慢。我发现 LuaJ 在其最新版本的 Android 上可用,我预计它不会导致性能大幅下降。
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多