2012-02-23 29 views
0

我遇到了一個可能很容易解決的問題,但我似乎無法找到答案。Android strace(或任何linux二進制文件)執行

我正試圖在Android設備上運行的不同進程上執行strace。我已經通過將strace二進制文件複製到/ system/xbin(就像模擬器一樣)並且工作得很好。我的問題是我通過引導程序複製了二進制文件,我不希望用戶必須經歷這些。

所以我發現這個偉大的教程,從一個應用程序中運行的二進制文件:

http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App

我按照教程,做這樣的:

  • 複製使用strace的二進制/數據/ data/com.mypackage
  • 更改執行權限到二進制文件(我也試過用777)
  • 嘗試執行它

    Process process = Runtime.getRuntime()。exec(「/ data/data/com.mypackage/strace -p PID -o/sdcard/folder_I_know_it_works」);

我知道命令是正確的,因爲當我從/ XBIN /系統執行它,它完美的作品。當我運行從應用程序中複製的那個時,我得到空輸出。我只爲自己的流程獲得適當的輸出,所以我明白這是一個權限問題。

我沒有提到,我的應用程序當然擁有root權限。我也嘗試將所有者更改爲strace二進制文件作爲root:root和system:system並且沒有任何內容。

綜上所述:我需要就一個二進制相同的權限,我從我的應用程序複製到手機內存比我有開/ XBIN/strace的

我在做什麼錯找到了一個二進制?

另一個好的解決方案是找到一種方法,將strace從具有根權限的應用程序中複製到/ system/xbin。有任何想法嗎?

非常感謝!

回答

2

如果對其他人有用,請找到答案。

Process process = Runtime.getRuntime().exec("su"); 
OutputStream os; 
os = process.getOutputStream(); 
os.write("your linux command here".getBytes()); 
os.close(); 

你基本上只運行su作爲一個過程,並通過其輸出流發送命令。

稍後您可能需要調用process.wait()

相關問題