我想知道在android應用程序運行時是否可以編寫/修改renderscript代碼。 我的主要目標是製作一個應用程序,用戶可以在沒有任何Java知識的情況下學習如何使用renderscript。該應用程序的基本佈局將包含一個輸入和輸出圖像,並可以輸入代碼。這個應用程序的基本功能已經在工作,這是一個界面的圖像。 在運行時編譯renderscript代碼
從應用程序直接反饋測試renderscript代碼將是有用的。
我已經做過研究關於構建過程,並與下面的想法來到了起來:
一個基本的「模板」的renderScript文件,與像進出分配必要的全局變量。
我的java代碼會創建一個生成的java類的腳本對象,並對這些全局腳本變量進行基本的初始化。 該模板.rs文件的根函數將爲空,並且應該可以在運行時由用戶實現。
當用戶在應用程序的主視圖中鍵入他的代碼時,代碼將寫入我自己的.rs文件,然後由應用程序調用由llvm-rs-cc編譯器編譯。生成的.bc將被複制到模板的原始.bc文件 的位置。由於代碼的唯一更改發生在根函數內部,所以不需要對周圍的代碼進行更改。
我現在遇到的問題是,.bc文件捆綁在res/raw文件夾中的最終apk內, 這是應用程序無法訪問的。因此用新生成的文件覆蓋舊的.bc文件是不可能的。
在運行時是否有(另一種)方式來編譯renderscript代碼?
編輯:解決方法可以在這github鏈接找到。欲瞭解更多詳情,請this回答,請閱讀最後評論
感謝您對這個漂亮的答案,我會嘗試這第一件事明天! – DeGoosseZ
祝你好運。好奇心:你打算如何在設備上調用'llvm-rs-cc'? – Kietz
仍然需要嘗試一些東西,但我已經閱讀了有關虛擬linux機器,並且能夠從命令行調用它們。所以用java exec我可以嘗試啓動它。但正如我所說,仍然有很多事情我需要找出,並希望我可以設法把它們合在一起.. – DeGoosseZ