2014-01-05 56 views
4

我正在研究一些用Java編寫的可以在Android上運行的Forms和Report Builder。至少是Forms和Reports執行者。用戶可以輸入簡單的groovy腳本,它可以改變簡單的變量。現在我的問題是groovy在Android上不會起作用。我用什麼方法代替Groovy的另一種語言。 要求: - 即語言應該被編譯並在Java中 執行 - 傳遞和閱讀變量腳本 - 所得到的字節碼應該運行在Android爲好,或者最終直接編譯和Android的Android中的Groovy,Scala,Clojure等腳本

+3

https://code.google.com/p/android-scripting/ –

+0

Scala適用於Android,但我知道的用法是最終的apk文件可以在Scala中構建,或者某些Scala庫可以在Java Android項目中使用。我不知道類似腳本的代碼是否也適用。 – Naetmul

+0

@tim_yates這個庫不斷被拋出,它不能被整合。 –

回答

1

除了Tim的變種執行(SL4A),現有的腳本語言還有更多的Java虛擬機。因爲Android沒有JVM,它具有Dalvik VM,它的工作方式不同,並且當某些JVM腳本語言在動態類文件編譯中進行中繼時,工作方式不同,並且打包和優化java字節碼,但不是每個人都會達到您的目的和執行。

如果您的任務很簡單,請考慮Lua。這是一個非常輕量級的腳本語言,它有2個工作純Java虛擬機的實現,這會在Android上:Groovy中的

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

版本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

+0

但是,這是對運行時腳本的支持還是僅僅用於編譯時使用該語言。 –

+0

正如你可以在這裏看到的:http://melix.github.io/blog/2014/06/grooid2.html你也可以做運行時腳本,雖然門楣相當慢 –

+0

痛苦地緩慢。我發現LuaJ在Android上可以使用它的最新版本,我不希望它的主要性能下降。 –