android 调用shell命令

网上找了好多都不能用,最后群里一朋友给了段代码可以用,记录下

public String exec(String xx) {
    Runtime ex = Runtime.getRuntime();
    String cmdBecomeSu = "/system/bin/sh -";
    String script = xx;
    try
    {
        java.lang.Process runsum = ex.exec(cmdBecomeSu);
        int exitVal = 0;
        final OutputStreamWriter out = new OutputStreamWriter(runsum.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(runsum.getInputStream()));
        out.write(script);
        out.write("\n");
        out.flush();
        out.write("exit\n");
        out.flush();
        out.close();
        String s = "";
        String line = null;
        while ((line = in.readLine()) != null) {
            s += line + "\n";
        }
        in.close();
        exitVal = runsum.waitFor();
        if (exitVal == 0)
        {
            Log.e("Debug", "Successfully to shell");
            return s;
        }
    }
    catch ( Exception e)
    {
        Log.e("Debug", "Fails to shell");
    }
    return cmdBecomeSu;
}

国内无法更新android sdk解决方法

最近学校开学,新课程有安卓程序开发,结果第一个问题就是更新sdk的问题,好多同学都搞不定翻墙,一个一个教又不现实,试了下国内的在线更新镜像服务器,结果只有几k的速度,所以打算自己搞一个更新镜像服务器,方法如下:
1、到https://developer.android.com/sdk/index.html下载一个最新版本的sdk管理器,然后断网,打开管理器,然后报错,错误日志里有提到http://dl.google.com/android/repository/repository-11.xml这个地址(不同版本的sdk管理器,可能提示的网址不同)和http://dl.google.com/android/repository/addons_list-2.xml这个网址。
2、联网,打开刚才提到的两个网址,发现是xml格式的文档,仔细观察,发现有
<sdk:url>https://dl-ssl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip<;/sdk:url>、
<sdk:url>android-16_r05.zip</sdk:url>、
<sdk:url>https://dl-ssl.google.com/glass/gdk/addon.xml<;/sdk:url>
这三种地址,遇到和第一种地址差不多的就直接迅雷下载里面的下载地址,和第二种差不多的需要把网址补全,如这里就补成http://dl.google.com/android/repository/android-16_r05.zip,然后下载,遇到和第三种差不多的就打开xml文档,重复第2步操作,直到全部xml里的文件都下完,最后按照和dl.google.com一样的目录结构放置上就OK了。
3、下好所有的文件后,安装apache,将所有文件移到apache的网站根目录去,启动apache。
4、在需要更新android sdk的电脑上修改hosts,将dl.google.com和dl-ssl.google.com指向装有apache的服务器,再勾上强制使用http,就可以开始更新了。

我这里有一份下载好的,大小有20多个G,目前放在了学校的内网,如果谁有需要,可以联系我获取。