打包工具之命令篇

来源:互联网 发布:知乎 1024地址 编辑:程序博客网 时间:2024/05/18 03:58

JAVA如何执行命令,并在控制台打印出错误信息

/** * cmd执行命令,会输出错误信息 *  * @param cmd * @return * @throws IOException * @throws InterruptedException */private  int exec(String cmd) throws IOException,InterruptedException {Runtime rt = Runtime.getRuntime();Process proc = rt.exec(cmd);InputStream std = proc.getInputStream();InputStreamReader sr = new InputStreamReader(std);BufferedReader br = new BufferedReader(sr);String line = null;while ((line = br.readLine()) != null)System.out.println(line);System.out.println("");InputStream stderr = proc.getErrorStream();InputStreamReader isr = new InputStreamReader(stderr, "gbk");br = new BufferedReader(isr);line = null;while ((line = br.readLine()) != null) {System.out.println(line);}System.out.println("");int exitVal = proc.waitFor();System.out.println(" decomple Process exitValue: " + exitVal);return exitVal;}



返回反编译命令

public static final String getdecomplecmd(String source,String dest) {StringBuilder s = new  StringBuilder();s.append("cmd /c ");s.append("java ");s.append("-jar ");s.append(getToolPath());s.append("apktool.jar ");s.append(" -q d -b -f ");s.append(source);s.append(" -o ");s.append(dest);System.out.println(s);return s.toString();}
source分别表示反编译APK路径和反编译后的路径。路径类似如下 : E:\\wokspace\\TestPy\\test.apk"   以\\作为转移分隔符。

getToolPath返回apktool.jar等工具的路径。

再加上exec();即可

当然还可以做一些其他操作,如果想批量操作的话,可以多开几个工作目录,多配置一些xml文件来处理。

比如重命名包名,拷贝资源,重新生成R文件,回编APK文件,重新签名等等




0 0