0

我有一个 C 库,我想在 Android 智能手机上使用它

我在使用 SWIG 包装库 API 方面取得了一些初步成功,这样我就可以从 Java 调用本机 C 函数(SWIG 为我自动生成所有 C 和 Java JNI 代码)。

因此,我可以在我的 x86 笔记本电脑上编写 Java 应用程序并让它调用本机共享库。

我的下一步是使用 Android NDK 为我的目标智能手机平台(可能是 ARM)制作本机共享库

最终,我将开发一个 Android GUI 来与该库进行交互。

但作为一项临时措施,是否有可能以某种方式从智能手机上的终端运行 Java 应用程序?

这将允许我在智能手机上使用我在笔记本电脑上使用过的相同 Java 'harness' 应用程序,以查看它是否工作,然后再进行下一步编写 Android GUI。

更新

我忘记了虽然android使用java语言它不使用java字节码 - 它的dalvik捆绑在.apk中所以我想到能够打开终端并运行java工具,例如

$ java harness

没有任何意义

我确实发现谷歌应用商店有一个 Android Terminal Emulator (Jack Palevich) 可用,但不知道如何将它放到 avd emualtor 上(我目前没有智能手机)

4

1 回答 1

1

我认为您可以测试 android.os.Exec.createSubprocess() api。演示代码:

Class<?> execClass = Class.forName("android.os.Exec");
    Method createSubprocess = execClass.getMethod("createSubprocess", String.class, String.class, String.class, int[].class);
    int[] pid = new int[1];
    FileDescriptor fd = (FileDescriptor)createSubprocess.invoke(null, "/system/bin/yourexecfile", "/", null, pid);

    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fd)));
    String output = "";
    try {
        String line;
        while ((line = reader.readLine()) != null) {
            output += line + "\n";
        }
    }
    catch (IOException e) {}

可以使用路径“/system/bin”。但我不确定其他路径,但你可以测试。祝你好运!^-^

于 2012-08-01T08:54:57.783 回答