gpt4 book ai didi

java - Android/Java 中 shell 应用程序的编译和通信

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:26 29 4
gpt4 key购买 nike

我有一个命令行应用程序(也是C语言的源代码)。我想在我的第一个 Android 应用程序中使用它。

这是我的问题:

  1. 我有一个针对 Mac 的已编译可执行文件。我应该为android重新编译它吗?如果是,怎么办?

  2. 是否可以与 Java/Android 中的 shell 中的可执行文件进行双向通信?

我正在寻找类似的东西:

Runtime.getRuntime().exec(cmd);

经过大量谷歌搜索后,我发现了唯一的那行代码。但我不想在每次调用后关闭可执行文件(它与互联网上的服务器通信)。这是我想做的:

1. Open shell executable
2. write AAA
3. read line
4. write BBB
5. read line
6. write CCC
...
98. write XYZ
99. read line
100. close executable

请注意,可能没有任何内容可读取,并且不应等待。

最佳答案

  1. 是的,您需要使用 NDK 重新编译它。如何:您可以在Android官方网站上找到更多信息,其中examples也在场。
  2. 是的,也可以这样做,并且有两种方法:a) JNI。您需要为您的函数编写一个包装器,并编译一个共享库b) 您可以编译可执行文件,运行它并通过输入/输出流进行通信。类似于:

         try {
    Process pb = Runtime.getRuntime().exec(cmd);
    String line;
    BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream()));
    while ((line = input.readLine()) != null) {
    System.out.println("Input from your C/C++ app: " + line);
    }
    input.close();

    } catch (IOException e) {
    e.printStackTrace();
    }

关于java - Android/Java 中 shell 应用程序的编译和通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979631/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com