簡體   English   中英

如何在Android應用中運行用戶提供的任意代碼?

[英]How to run user-provided, arbitrary code in an android app?

我正在編寫的應用程序將需要采用用戶定義的代碼(該語言不是特別重要,因為用戶永遠不會看到該語言,用戶將使用視覺腳本之類的東西)並運行該代碼。 該代碼將需要訪問用Java編寫的庫,並創建變量等。 用戶提供的代碼將與完整程序一樣復雜。

我一直在尋找解決此問題的方法。 到目前為止,我在Java,反射,javax.script,JavaCompiler,編寫我自己的解釋器等中發現了幾種不同的方法。 根據我閱讀的內容,反射可能無法正常工作,根據android包索引,android沒有javax.script或JavaCompiler,但是有些項目將Rhino和V8移植到android,我不敢寫一個解釋器,但是將在必要時。

我想知道的是,我是否朝着正確的方向前進? 解決此問題的最佳方法是什么?

如果語言不重要,則可以嘗試使用Javascript。 檢查: http : //developer.android.com/reference/android/webkit/WebView.html#evaluateJavascript(java.lang.String,android.webkit.ValueCallback)

您可以使用addJavascriptInterface方法公開所有必需的系統功能(例如,控制振動)。 這使您可以將對系統的訪問限制為僅公開的方法。

另一個選擇(可能更好)是使用您自己的解釋器。 無論如何,您將創建所有對象以允許可視化腳本,只需定義與每個對象相對應的java調用即可。 這樣,您可以防止用戶運行任意代碼。

暫無
暫無

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

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