2012-09-10 89 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中加載類。

相關問題