2013-05-09 18 views
1

我下載了Android的c4droid應用程序,並通過system();運行命令。我知道有些東西可以工作,有些則不能。大部分很酷的東西都不起作用,這似乎是由於我的用戶配置文件沒有被授予在Linux操作系統級別執行這些命令的權利。Android權限執行本機應用程序?

因此嘗試了另一個實驗。我爲arm處理器獲得了一個特殊的Gnu編譯器,並編譯了一個簡單的hello world應用程序。然後,我戴上手機,試圖通過system("./myapp.bin");等c4droid應用程序執行它。我收到了一條permission denied消息。

因此,我只是想了解我可以做什麼,以及我在付錢的手機上做不到的事情?我可以執行一個這樣的hello世界應用程序嗎?我真的需要root權限才能執行我創建的應用程序嗎?有沒有辦法讓我的代碼通過將其包裝在android/java代碼中來運行?我是否必須通過Dalvikvm才能運行?

我真的很想找到一種方法來做到這一點,而不需要對它進行紮根或下載諸如busybox和使用su之類的東西。

回答

1

許多不同的問題。

  1. permission denied是原始的shell知道的幾個錯誤消息之一,而且它用於許多其他類型的故障,包括沒有找到請求的命令。

  2. 工具箱套件缺少許多典型的unix命令。人們有時會安裝busybox作爲更全面的補充

  3. 您可能想要做的一些事情實際上需要的權限是shell(甚至更多,應用程序用戶標識)帳戶沒有的權限。只有在仿真器或工程設備上,adb shell默認以root用戶身份運行,但在「rooted」設備上,您可能能夠訪問root shell。

  4. 您不需要root訪問權限就可以運行編譯代碼,但代碼必須具有合適的ABI,必須滿足所有的庫依賴關係,並且必須安裝在具有可執行標誌的文件中,沒有安裝不可執行的標誌。你面臨的一些問題是glibc(或其他)與Android的仿生libc。如果應用程序將文件設置爲世界可讀和可執行文件,則應用程序的私有存儲區域是一個選項,但可執行暫存目錄因Android版本而異。

  5. 運行本機代碼的通常(也是唯一的「推薦」)方法是將其構建爲與Android的仿生libc相連的共享庫,並使用JNI從dalvik/java應用程序調用它。

+0

是的我知道。但是我會認爲'。/ myapp.bin'會讓它運行以禁止任何技術問題。 – 2013-05-09 18:59:18

+0

這通常面臨三個問題 - 在文件上執行標誌,在分區上沒有執行標誌和libc(in)兼容性。 – 2013-05-09 19:03:16

+0

如何通過標準的android應用程序運行可執行文件? – 2013-05-09 19:03:54

相關問題