为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蓝山帝景 2023-12-21 10:40:17
我需要制作运行 iperf3 库的 android 应用程序,因此我使用 android-ndk-r20 编译了“iperf3”,并进行了更改iperf_api.cchar 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我不知道如何让它工作,Google Play 商店中有一些应用程序在没有 root 权限的情况下使用 iperf3,所以这是可能的。我做错了什么?
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

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

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

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


查看完整回答
反对 回复 2023-12-21
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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

例如: Os.setenv("TEMP", CACHE_DIR, true)

在函数中检查临时目录iperf_api.c iperf_new_stream


查看完整回答
反对 回复 2023-12-21
  • 2 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信