Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
脱机调试Android应用程序_Android_Debugging - Fatal编程技术网

脱机调试Android应用程序

脱机调试Android应用程序,android,debugging,Android,Debugging,我正在开发一个使用位置服务的应用程序。我需要使用Log.d()调试应用程序,但这需要设备一直连接到计算机。这对我来说是不可能的。我将在旅行中测试该应用程序大约两个小时。我当时无法将其连接到PC 是否有任何方法可以保存登录手机并在以后检索它,并可以查看日志数据。有一些应用程序可以抓取日志的最后几百行,并通过电子邮件发送到您想要发送到的任何电子邮件。我用过日志收集器 .. 并且可以推荐它,做你需要为你做的工作:D有一些应用程序可以抓取日志的最后几百行,如果通过电子邮件发送到任何你想发送到的电子邮件。

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


是否有任何方法可以保存登录手机并在以后检索它,并可以查看日志数据。

有一些应用程序可以抓取日志的最后几百行,并通过电子邮件发送到您想要发送到的任何电子邮件。我用过日志收集器 ..
并且可以推荐它,做你需要为你做的工作:D

有一些应用程序可以抓取日志的最后几百行,如果通过电子邮件发送到任何你想发送到的电子邮件。我用过日志收集器 ..
并且可以推荐它,您需要为您做的工作是什么:D

介绍您自己的
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));
    }

    ...

}

介绍您自己的
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));
    }

    ...

}