脱机调试Android应用程序

问题描述:

我正在开发一个使用位置服务的应用程序。我需要使用Log.d()来调试应用程序,但需要将设备一直连接到计算机。这对我来说是不可能的。我将在旅行中测试该应用大约两个小时。当时我无法将其连接到PC。脱机调试Android应用程序

有没有什么办法可以保存手机中的日志并在以后检索,并可以看到日志数据。

介绍自己Logger类,为android.util.Log类的包装,这都将重定向输出到文件和控制台:

public class Logger { 

    public static PrintWriter printWriter = null; 

    private static void init() { 
     ... 
     // Check if external media is writable 
     ... 

     if (printWriter == null) { 
      try { 
       File dir = new File(Environment.getExternalStorageDirectory() + LOG_DIR); 
       dir.mkdirs(); 
       printWriter = new PrintWriter(new FileWriter(new File(dir, LOG_FILE), true)); 
      } 
      catch (IOException e) { 
       Log.e(Logger.class.getName(), "initExternal() -> IOException", e); 
      } 
     } 
    } 

    private static synchronized int log(int priority, String tag, String msg) { 
     int res = Log.println(priority, tag, msg); 

     init(); // May be called just once, depending on your requirements 

     printWriter.print(tag + " "); 
     printWriter.print(msg + "\r\n"); 
     printWriter.flush(); 
     return res; 
    } 


    // Duplicates of standard android.util.Log methods: 
    public static int v(String tag, String msg) { 
     return log(Log.VERBOSE, tag, msg); 
    } 
    public static int v(String tag, String msg, Throwable tr) { 
     return log(Log.VERBOSE, tag, msg + '\n' + Log.getStackTraceString(tr)); 
    } 
    public static int d(String tag, String msg) { 
     return log(Log.DEBUG, tag, msg); 
    } 
    public static int d(String tag, String msg, Throwable tr) { 
     return log(Log.DEBUG, tag, msg + '\n' + Log.getStackTraceString(tr)); 
    } 

    ... 

} 

有些应用程序会抓取最后几百行日志,并通过电子邮件发送到您想要发送到的任何电子邮件。我已经使用日志收集 https://play.google.com/store/apps/details?id=com.xtralogic.android.logcollector&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS54dHJhbG9naWMuYW5kcm9pZC5sb2djb2xsZWN0b3IiXQ .. ,可以推荐它,确实你需要为你做的工作:d

+0

似乎只收集最后200日志.... aLogcat是好多了 – 2012-04-12 07:26:15