我有一个为 Android 成功编译的 C 命令行可执行文件。我可以通过执行以下操作在我的 Android ICS 手机上复制可执行文件并使用 Android Terminal Emulator
启动它:
- 执行“export TERMINFO=/etc/terminfo”
- 执行“mount -o remount rw/sdcard”
- 从 SD 卡启动可执行文件
第一步是必要的,因为命令行应用程序使用 ncurses 库,如果我没有设置 TERMINFO,那么当我尝试启动应用程序时会收到错误消息。如果我离开第二步,那么当我尝试从 SD 卡启动命令行应用程序时,我会收到“访问被拒绝”。因此,只要我手动执行这些步骤,我就可以启动命令行可执行文件。
现在我要做的是将此命令行可执行文件包装在标准 Android 应用程序中。 Android Terminal Emulator
的源代码是开源的,因此我可以使用它在我的 Android 应用程序中打开一个 EmulatorView
。不过,我的问题是如何将 native 可执行文件包含在 apk
中,将其部署到设备中我的应用程序有权在 EmulatorView
中执行它的位置>。我有点担心我是否能够解决权利问题,以便可以启动 native 命令行可执行文件。
我确实知道 Android NDK,但希望不要必须重新编写一个工作的命令行应用程序,以便它可以作为一个库包含在内。我特别关注保持 C 可执行源的原样并从包装器应用程序执行它。有谁知道这是否可行,如果可行,我将如何去做?
最佳答案
如果您将 native
文件复制到您应该具有适当权限的数据文件夹下,然后使用 Runtime.exec
来执行您的文件。
您可以创建一个bin
文件夹(或任何名称)并将您的文件复制到
Process exeProcess =
Runtime.getRuntime().exec("/data/data/YOUR_PACKAGE/bin/EXECUTABLE_FILE");
您可以使用对象 exeProcess
从您的可执行文件中读取数据。
关于android - 在标准 Android 应用程序中包装 C 命令行可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914970/