在Android中使用Java运行git命令

时间:2019-02-01 12:14:38

标签: java android linux git

我正在尝试运行一些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

但返回相同的未发现

请帮助我。这个项目对我来说很有意义。 谢谢。

0 个答案:

没有答案