2013-02-16 74 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

相关问题