我正在尝试运行一些Linux命令,例如nodejs和git 在我的Android应用程序中,以便用户可以直接运行 他们的nodejs项目并使用此应用程序克隆存储库。
有关现在即时通讯能够运行一些基本命令 像aapt,ls,cat,cal并获取输出。
Process p = Runtime.getRuntime().exec(cmd,env,new File(..));
InputStream o = p.getInputStream();
InputStream err = p.getErrorStream();
某些命令(例如top)使我的应用在运行时冻结。 但是我认为我不会使用它。 在这个香港专业教育学院试图运行的javac,我从jdk得到的java 但我只是找不到javac。我不确定发生了什么。 我已经运行chmod来更改权限。
当搜索在此网站,我发现回答他们提到的termux和Android终端 仿真器。我阅读了源代码,发现他们使用它来构建环境:
public static String[] buildEnvironment(boolean failSafe, String cwd) {
new File(HOME).mkdirs();
if (cwd == null) cwd = HOME;
final String termEnv = "TERM=xterm-256color";
final String homeEnv = "HOME=" + HOME;
final String prefixEnv = "PREFIX=" + PREFIX;
final String androidRootEnv = "ANDROID_ROOT=" + System.getenv("ANDROID_ROOT");
final String androidDataEnv = "ANDROID_DATA=" + System.getenv("ANDROID_DATA");
// EXTERNAL_STORAGE is needed for /system/bin/am to work on at least
// Samsung S7 - see https://plus.google.com/110070148244138185604/posts/gp8Lk3aCGp3.
final String externalStorageEnv = "EXTERNAL_STORAGE=" + System.getenv("EXTERNAL_STORAGE");
if (failSafe) {
// Keep the default path so that system binaries can be used in the failsafe session.
final String pathEnv = "PATH=" +PREFIX+"/system/bin:"+ System.getenv("PATH");
return new String[]{termEnv, homeEnv, prefixEnv, androidRootEnv, androidDataEnv, pathEnv, externalStorageEnv};
} else {
final String ldEnv = "LD_LIBRARY_PATH=" + PREFIX + "/lib";
final String langEnv = "LANG=en_US.UTF-8";
final String pathEnv = "PATH=" + PREFIX + "/bin:" + PREFIX+ "/bin/applets";
final String pwdEnv = "PWD=" + cwd;
final String tmpdirEnv = "TMPDIR=" + PREFIX+ "/tmp";
return new String[]{termEnv, homeEnv, prefixEnv, ldEnv, langEnv, pathEnv, pwdEnv, androidRootEnv, androidDataEnv, externalStorageEnv, tmpdirEnv};
}
}
和我仍然得到同样的结果没有找到。 我像termux和ATE一样将filesDir添加到PATH变量中。 这是我的文件目录:
/data/data/com.test/
files/
lib/libjni.so
system/bin/
javac
/lib/libjavacrypto.so
所以问题是我无法从目录运行cmd文件 我尝试使用sh:
cd $PATH
javac
但返回相同的未发现
请帮助我。这个项目对我来说很有意义。 谢谢。