使用Retrace还原被ProGuard混淆后的崩溃堆栈

AndroidSDK的tools中提供了混淆和还原的jar文件,当然也可以直接下载ProGuard相关的jar:

http://sourceforge.net/projects/proguard/

命令行使用比较简单,参照提示即可,但是如何在通过代码调用呢?如下所示,需要注意的是execute()执行后,需要通过如下方式将标准输出写到文件中。

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import proguard.retrace.ReTrace;

public class RetraceUtil {
	private Logger m_logger = LoggerFactory.getLogger(this.getClass());
	
	private String stackFile;
	private String mapFile;
	private String outFile;
	private boolean append;
	
	public RetraceUtil(String map,String proF,String out,boolean append)
	{
		this.mapFile = map;
		this.stackFile = proF;
		this.outFile = out;
		this.append = append;
		myReTrace();
	}
	
	public void myReTrace() 
	{
		 try {
			File file = new File(this.outFile);
			//是否增量写入
			FileOutputStream fis = new FileOutputStream(file,this.append);
			PrintStream out = new PrintStream(fis);
//			sysout的print内容输出到文件
			System.setOut(out);
			ReTrace localReTrace = new ReTrace(ReTrace.STACK_TRACE_EXPRESSION, true, new File(this.mapFile), new File(this.stackFile));
			localReTrace.execute();
			out.close();
			fis.close();
			m_logger.info("Retrace Done!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			m_logger.error("Retrace Erro:");
			m_logger.error(e.getMessage());
		}
	}




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Anlegor/article/details/46417459
个人分类: ProGuard
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭