从智能手机上的命令行终端测试Android NDK

时间:2012-08-01 08:32:26

标签: java android android-ndk java-native-interface smartphone

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

我已经初步成功使用SWIG包装库API,以便我可以从Java调用本机C函数(SWIG为我自动生成所有C和Java JNI代码)。

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

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

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

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

这将允许我使用我在智能手机上的笔记本电脑上使用的相同Java“线束”应用程序来查看它是否在下一步编写Android GUI之前是否有效。

更新

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

$ java harness

没有任何意义

我确实发现谷歌应用程序商店中有一个Android终端模拟器(Jack Palevich),但不确定如何将其发送到avd emualtor(我目前没有智能手机)

1 个答案:

答案 0 :(得分: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”。但我不确定其他路径,但你可以测试。 祝好运! ^ - ^