android 从电脑访问日志文件
android access log file from pc
我的 6.0.1 应用程序在 2013 nexus(未 root)上重启时表现异常,因此我试图将日志文件写入内部存储。我通过连接到 PC 的 WiFi 进行套接字日志记录,但是当电源回收时出现问题,我的应用程序在收到启动完成时启动,所以我想我会写一个日志文件,所以我正在尝试:
String filename="tablet.log";
File logFile = new File(getFilesDir(), filename);
p("log file: "+logFile);
try {
OutputStream outputStream = new FileOutputStream(logFile);
outputStream.write("foo\n".getBytes());
outputStream.close();
p("wrote to log file: ");
} catch (Exception e) {
e.printStackTrace();
}
try {
InputStream inputStream = new FileInputStream(logFile);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
String string=bufferedReader.readLine();
inputStream.close();
p("read from log file: "+string);
} catch (Exception e) {
e.printStackTrace();
}
Logger global=Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
LoggingHandler.init();
LoggingHandler.setLevel(Level.WARNING);
try {
p("log file get name: "+logFile.getPath());
Handler handler=new FileHandler(logFile.getPath());
handler.setLevel(Level.ALL);
l.addHandler(handler);
l.warning("added file handler: "+handler);
} catch(Exception e) {
l.warning("file handler caught: "+e);
}
我似乎正在写入文件并且似乎添加了文件处理程序,但是当我使用 adb 时看不到文件:
D:\AndroidStudioProjects\Cb7>adb -s 0a9196e8 shell ls /data/user/0/com.tayek.tablet.gui.android.cb7
获取:opendir 失败,权限被拒绝
有什么办法可以把文件传到电脑上吗?
谢谢
编辑:jared 的建议有效:adb shell 运行-as com.tayek.tablet.gui.android.cb7 ls 文件 - 将显示文件!
另外,adb exec-out 运行-as package.name cat files/file > file 获取文件到 PC。
看起来需要:adb -s %device% shell 运行-as %package% ls -l /data/data/%package%/files
/data
中的文件无法被 shell
用户读取。您需要使用 run-as
命令,只要安装了调试版本,该命令就可以使用。
您可以检查文件是否存在:
adb shell run-as com.tayek.tablet.gui.android.cb7 ls files
要将文件复制到您的 PC,您需要将日志文件复制到您的 SD 卡,然后使用 adb pull
检索文件。在 Android 5.0+ 上你可以简单地做:
adb shell exec-out run-as package.name cat files/tablet.log > tablet.log
这应该适用于以前的(和当前的)Android 版本:
> adb shell
$ run-as package.name
$ cp files/tablet.log $EXTERNAL_STORAGE/tablet.log
$ exit
> adb pull /sdcard/tablet.log
显然,将 package.name
替换为您的包名称 (com.tayek.tablet.gui.android.cb7
)。
参见:android adb, retrieve database using run-as
我的 6.0.1 应用程序在 2013 nexus(未 root)上重启时表现异常,因此我试图将日志文件写入内部存储。我通过连接到 PC 的 WiFi 进行套接字日志记录,但是当电源回收时出现问题,我的应用程序在收到启动完成时启动,所以我想我会写一个日志文件,所以我正在尝试:
String filename="tablet.log";
File logFile = new File(getFilesDir(), filename);
p("log file: "+logFile);
try {
OutputStream outputStream = new FileOutputStream(logFile);
outputStream.write("foo\n".getBytes());
outputStream.close();
p("wrote to log file: ");
} catch (Exception e) {
e.printStackTrace();
}
try {
InputStream inputStream = new FileInputStream(logFile);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
String string=bufferedReader.readLine();
inputStream.close();
p("read from log file: "+string);
} catch (Exception e) {
e.printStackTrace();
}
Logger global=Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
LoggingHandler.init();
LoggingHandler.setLevel(Level.WARNING);
try {
p("log file get name: "+logFile.getPath());
Handler handler=new FileHandler(logFile.getPath());
handler.setLevel(Level.ALL);
l.addHandler(handler);
l.warning("added file handler: "+handler);
} catch(Exception e) {
l.warning("file handler caught: "+e);
}
我似乎正在写入文件并且似乎添加了文件处理程序,但是当我使用 adb 时看不到文件:
D:\AndroidStudioProjects\Cb7>adb -s 0a9196e8 shell ls /data/user/0/com.tayek.tablet.gui.android.cb7
获取:opendir 失败,权限被拒绝
有什么办法可以把文件传到电脑上吗?
谢谢
编辑:jared 的建议有效:adb shell 运行-as com.tayek.tablet.gui.android.cb7 ls 文件 - 将显示文件!
另外,adb exec-out 运行-as package.name cat files/file > file 获取文件到 PC。
看起来需要:adb -s %device% shell 运行-as %package% ls -l /data/data/%package%/files
/data
中的文件无法被 shell
用户读取。您需要使用 run-as
命令,只要安装了调试版本,该命令就可以使用。
您可以检查文件是否存在:
adb shell run-as com.tayek.tablet.gui.android.cb7 ls files
要将文件复制到您的 PC,您需要将日志文件复制到您的 SD 卡,然后使用 adb pull
检索文件。在 Android 5.0+ 上你可以简单地做:
adb shell exec-out run-as package.name cat files/tablet.log > tablet.log
这应该适用于以前的(和当前的)Android 版本:
> adb shell
$ run-as package.name
$ cp files/tablet.log $EXTERNAL_STORAGE/tablet.log
$ exit
> adb pull /sdcard/tablet.log
显然,将 package.name
替换为您的包名称 (com.tayek.tablet.gui.android.cb7
)。
参见:android adb, retrieve database using run-as