2017-06-24 36 views
-1

我試圖從運行應用程序的內部存儲(/data/data/%package%/..)一個makefile文件生成文件被存儲在應用程序特定的文件夾在內部存儲一個run.sh文件觸發。我們可以從android應用程序的內部存儲執行make嗎?

shell腳本

06-24 17:14:16.893 E/File Manager: Shell: #!/system/bin/sh 
06-24 17:14:16.893 E/File Manager: Shell: /data/data/com.mkmv.playground/files/appfldr/make -f /data/data/com.mkmv.playground/files/appfldr/tmp/Makefile 

和日誌

06-24 17:14:16.956 E/File Manager: Execution Error: /system/bin/sh: sed: not found 
            /system/bin/sh: sed: not found 
            /system/bin/sh: sed: not found 
            /system/bin/sh: sed: not found 
            /system/bin/sh: sed: not found 

上的appfldr所有文件冉chmod 777,只能白白結束。

此外,嘗試添加

"cd " + this.getFilesDir().getAbsolutePath() + "/appfldr \n"; 

的shell腳本,執行生成文件之前,沒有任何反應。

當我嘗試在紮根手機上運行相同操作時,即使沒有詢問超級用戶訪問權限,它也可以正常工作,無論是否帶有cd。但是在一個無根的設備中它並不是。據我研究的主題,應用程序應該能夠從其私人文件夾執行。我錯在哪裏?

謝謝!

+0

也許你需要一個紮根設備。 Android操作系統可能會阻止未連根的設備上的某些命令 – Zoe

+0

但是,當我嘗試在根設備上嘗試時,超級用戶從未請求root訪問。即使當我檢查超級用戶日誌時,也沒有發現與應用程序相關的任何內容! –

+0

紮根Android和非紮根Android仍然存在差異。即使你不要求超級用戶訪問,仍然有區別。 – Zoe

回答

0

最後,回答我自己的問題。

我對終端的不熟悉是主要問題。 問題是sed不可用。據我猜測,應用程序沒有訪問內部目錄的問題。在根源設備中,busybox已將sed添加到$PATH,因此它工作正常。管理在無根設備中添加sed,並且事情正常工作!

謝謝,誰試圖幫助我!

相關問題