Java Can';没有root权限,无法在android上运行iperf3

Java Can';没有root权限,无法在android上运行iperf3,java,android,networking,Java,Android,Networking,我需要制作运行iperf3库的android应用程序,所以我使用android-ndk-r20编译了“iperf3”,并在 iperf_api.c char buf[] = "/tmp/iperf3.XXXXXX"; charbuf[]=“/tmp/iperf3.XXXXXX”我已替换为字符buf[]=“/data/local/tmp/iperf3.XXXXXX”,找到了如何将其与我的android应用程序打包并运行的方法。但是我不知道如何在没有“su”(root)权限的情况下运行它 油井作业

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

iperf_api.c

char buf[] = "/tmp/iperf3.XXXXXX";
charbuf[]=“/tmp/iperf3.XXXXXX”我已替换为
字符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]));

我不知道如何使它工作,有一些应用程序在谷歌播放商店使用iperf3没有根权限,所以这是可能的。我做错了什么?

我找到了让它工作的方法。在编译“iperf3”之前,您需要更改“iperf_api.c”中的后续行

to
char buf[]=“/data/data/your.package.name/cache/iperf3.XXXXXX”
而且效果很好!

我希望我帮助了某人。

当您将以下任何环境变量设置为可写目录(即cacheDir)时,它也起作用:
TMPDIR
TEMP
TMP

例如:
Os.setenv(“TEMP”,CACHE\u DIR,true)

iperf\u api.c
iperf\u new\u stream
函数中检查临时目录

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