java - 没有root权限无法在android上运行iperf3

标签 java android networking

我需要制作运行 iperf3 库的 android 应用程序,所以我使用 android-ndk-r20 编译了“iperf3”并进行了更改

iperf_api.c

char buf[] = "/tmp/iperf3.XXXXXX"; 我已经替换为 char buf[] = "/data/local/tmp/iperf3.XXXXXX"; ,弄清楚了如何将它与我的 android 应用程序打包并运行。但我不知道如何在没有“su”(root)权限的情况下运行它。

运行良好的代码:

ArrayList<String> commandLine = new ArrayList<String>();
commandLine.add("su");
commandLine.add("-c");
commandLine.add(getApplicationContext().getApplicationInfo().nativeLibraryDir+"/libiperf3.so -c speedtest.hostkey.ru -t 10 -i 5 -P 3 -d");
Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[0]));

它与“su”一起工作得很好,但我需要让它在没有 root 的情况下工作。当我尝试相同的代码但将“su”替换为“sh”时,出现此错误:

iperf3: error - unable to create a new stream: Permission denied

我不知道如何让它工作,有一些应用程序在没有 root 权限的情况下在 Google Play 商店中使用 iperf3,所以这是可能的。我做错了什么?

最佳答案

我想出了如何让它发挥作用。在编译“iperf3”之前,您需要更改“iperf_api.c”中的后续行

char buf[] = "/tmp/iperf3.XXXXXX";

char buf[] = "/data/data/your.package.name/cache/iperf3.XXXXXX"; 而且效果很好! 我希望我帮助了某人。

关于java - 没有root权限无法在android上运行iperf3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58574682/

相关文章:

java - ResultSet 不为 null 但给出空指针异常

java - JAXBContext 和 @XmlNsForm 注释

android - 如何编写来自 Android Market 的 Android 应用程序更新

swift - 如何在 JSON 模型 swift 中添加自定义变量?

java - 特定错误消息未在 Primefaces 中呈现?

java - 如何在 Eclipse 中配置自动格式化?

安卓单点登录

Java/Android : Literally Compare date of 2 Calendar objects

python - 初始化套接字对象

C# 文件选择和网络访问?