簡體   English   中英

在Android運行時執行Java中嵌入的Groovy腳本

[英]Executing Groovy scripts embed in Java on runtime for Android

從2.4版開始,Groovy支持Android。 我想在我的Android應用程序中運行嵌入Java的Groovy腳本。

該網站解釋說這是可能的: http : //melix.github.io/blog/2014/06/grooid2.html

適應Groovy語言的困難之一是,正如我們所說的,Groovy是一種高度動態的語言。 它的功能之一是在運行時執行腳本。 那么,如果我們想在設備上鍵入Groovy腳本並直接在設備上執行該腳本怎么辦? 可能嗎? 實際上,可以,只要您遵循以下過程即可:

您可以有一個用Groovy編寫的應用程序,也可以不是用Groovy編寫的,但是最后,一旦該應用程序運行,您就有了要執行的Groovy源代碼。 然后,它需要編譯類,直接在設備上調用dex,將結果打包到本地文件系統上的jar文件中,然后使用特殊的類加載器將其加載。 因此,為什么做到這一點,過程非常復雜,不簡單,但更重要的是,它非常緩慢。

令我興奮的是,無論速度如何,這的確是可能的。 這里有一個示例項目: https : //github.com/melix/grooidshell-example

不幸的是,我不太了解這個過程。 我有一個很小的項目,但是我不確定要去哪里看。

您能為我指明正確的方向,以便在Android的運行時上執行Java中嵌入的Groovy腳本嗎?

仔細查看https://github.com/melix/grooidshell-example/blob/master/GroovyDroid/src/main/java/me/champeau/groovydroid/GrooidShell.java

那將創建一個DexFile(第71行)實例,在編譯中添加一個字節碼后處理器(第73行),以獲取所生成類​​的字節並將其轉換為dex格式(第76行),最后將其存儲在dexfile實例中(第76行) 77)。 然后獲取dalvik字節碼(第91行),使用DexClasLoader(第136行)加載dalvik / dex類(第138行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM