java - 如何将环境变量添加到 android Runtime.getRuntime().exec 命令中?

标签 java android linux bash shell

运行 android Runtime.getRuntime().exec 方法时出现问题。

我有一个要在 android 上运行的 native 二进制文件,我使用 java 方法 Runtime.getRuntime().exec 启动它。但运行这个 native 二进制文件需要添加环境变量。所以我执行这个命令:

envSetCmd = {"sh", "-c", "导出 LD_LIBRARY_PATH="+excBinFilepath+":$LD_LIBRARY_PATH"}。

当我使用以下命令检查环境变量时,它不起作用: sh-cecho $LD_LIBRARY_PATH

我认为原因是,当我设置环境变量时,我启动了一个 shell,当我使用命令“echo”检查它时,另一个 shell 被启动。所以环境变量在 shell 中不起作用,我检查了一下。

我认为有两种方法可以解决这个问题。第一种是在一个 shell 中运行两个命令。所以我尝试使用命令:

{"sh", "-c", "export LD_LIBRARY_PATH="+excBinFilepath+":$LD_LIBRARY_PATH", "-c", "echo $LD_LIBRARY_PATH"}.

不幸的是,这是非法的。另一个是我将环境变量添加到android用户启动文件中。我尝试回显 $PATH,我看到 /system/bin/ 和其他路径在 android 启动时加载。

所以我想一定有一个类似于linux中的~/.bashrc的文件可以设置用户的环境。

任何人都可以给我一些关于我上面列出的方法的线索吗?顺便说一句,我不应该root手机!

最佳答案

尝试使用 env 执行您需要执行的任何内容:

{"env", "LD_LIBRARY_PATH="+excBinFilepath, "yourCmd"}

关于java - 如何将环境变量添加到 android Runtime.getRuntime().exec 命令中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872944/

相关文章:

java - Gradle 不编译 war 项目中的类

java - 在 Spring Boot Controller 中反序列化枚举忽略大小写

java - 如何每x秒更新一个textview?

Android Native to Flutter 无法在主 channel 中工作

C++ 函数在 windows 中完美运行但在 linux 中不完美?

java - 通过字节数组问题进行文件比较

android - 变量切换方向丢失

c++ - 使用 socketpair : hangs reading output from child process 进行双向通信

python-3.x - 如何使用Python从Azure服务总线读取消息?

java - 在 Play 2.4 中循环创建 InputRadioGroups