2013-02-16 83 views
3

我有一個C命令行可執行文件,我已成功編譯爲Android。我可以複製的可執行文件,並通過執行以下操作以Android Terminal Emulator啓動它在我的Android手機ICS:在標準Android應用程序中包裝C命令行可執行文件

  1. 執行「出口TERMINFO =的/ etc/terminfo的」
  2. 執行「安裝鄰重新掛載RW/SD卡」
  3. 推出從SD卡

步驟一個可執行文件是必要的,因爲在命令行應用程序使用ncurses庫的,如果我不設置TERMINFO然後我得到一個錯誤,當我嘗試啓動應用程序。如果我離開第二步,那麼當我嘗試從SD卡啓動命令行應用程序時,我會遇到「拒絕訪問」。所以,如果我手動執行這些步驟,我可以啓動命令行可執行文件。

現在我想要做的是將這個命令行可執行文件包裝在標準的Android應用程序中。 Android Terminal Emulator的源代碼是開源的,所以我可以使用它在我的Android應用程序中打開一個EmulatorView。我的問題是,如何在apk中包含本地可執行文件,將其部署到位於我的應用程序有權在EmulatorView中執行它的位置的設備。我有點擔心我是否能夠解決版權問題,以便可以啓動本地命令行可執行文件。

我的確瞭解Android NDK,但寧願而不是必須重新編寫一個工作的命令行應用程序,以便它可以作爲庫包含在內。我特別關注如何保持C可執行文件的源代碼,並從包裝器應用程序執行它。有誰知道這是否可能,如果有的話,我會怎麼做呢?

回答

1

如果您將數據文件夾下的native文件複製到應具有適當權限的位置,然後使用Runtime.exec執行文件。

您可以創建一個bin文件夾(或任何名稱)和下

Process exeProcess = 
     Runtime.getRuntime().exec("/data/data/YOUR_PACKAGE/bin/EXECUTABLE_FILE"); 

複製你的文件,你可以使用對象exeProcess從您的可執行文件中讀取數據。

+0

感謝您的信息,iTech。很高興知道我有權在應用程序數據文件夾中執行它。在我處理這件事時,會回覆我的進度。謝謝。 – BruceHill 2013-02-17 14:14:43

+0

這工作完美。謝謝。 :) – BruceHill 2013-02-23 21:48:16

+0

很高興爲你工作。 – iTech 2013-02-24 19:35:40

相關問題