10

我在 SD-CARD 上有文件,我的应用程序将其用作日志文件。是否可以通过 adb 实时查看所有更改的文件?就像tail -f /sdcard/myfile.log命令一样。

4

5 回答 5

9

这似乎对我很有用:

adb shell "while true; do cat; sleep 1; done < /sdcard/myfile.log"
于 2017-05-31T15:07:53.980 回答
2

您可以安装busybox,然后:

adb shell
tail -f /path/of/your/file

但请记住,您应该拥有安装busybox 的root 访问权限。如果您使用的是模拟器,请检查以下内容: 如何在 Android 模拟器上获得 root 访问权限?

于 2013-09-05T07:43:52.103 回答
0

你可以用 logcat 做到这一点。您可以添加一个仅显示来自您的应用程序的日志条目的视图,并且它将不断更新。

于 2010-06-02T12:37:57.867 回答
0

有一个很棒的应用程序:终端 IDE。它包含许多 linux 命令,并且不需要 root 访问权限。您可以从GooglePlay安装它。是免费的(并且是开源的,GPLv2)。

它的最大特点之一是可以通过telnet. 在手机上启动它,然后键入telnetd命令。它将启动一个 telnet 守护进程,默认侦听端口 8080。之后,您可以使用以下命令从 PC 连接它:(在 Windows 上使用 cygwin)

telnet 192.168.1.8 8080

您应该使用手机的 IP 地址而不是上述地址。成功连接后,您的 PC 上将拥有一个任意大小的终端,该终端能够tail -f在您的手机上运行命令。还有许多其他的,例如bash它的所有内置命令。

于 2015-12-22T16:38:32.913 回答
0

基于 Jesse 的回答,对应用程序私有存储区域中的文件执行类似操作:

adb shell "while true; do run-as com.yourdomain.yourapp cat /data/data/com.yourdomain.yourapp/app_flutter/yourfile.txt; sleep 5; done" | egrep -o 'sometext.{0,50}'

(此示例适用于 Android 上的 Flutter 应用,但与 app_flutter 目录类似。)

do run-as将运行命令的用户更改为应用程序。默认情况下,adb shell 用户不应访问应用程序私有存储区域下的任何文件。

| egrep -o 'sometext.{0,50}'cat 命令将文件内容发送到 STDOUT。 正在使用正则表达式(因此而不是)egrep获取内容并搜索-o(仅)sometext+ 50 个字符。egrepgrep

仅最后一行

替换cattail -n 1

添加--line-bufferedegrep

adb shell "while true; do run-as com.yourdomain.yourapp tail -n 1 /data/data/com.yourdomain.yourapp/app_flutter/yourfile.txt; sleep 5; done" | egrep --line-buffered -o 'sometext.{0,50}'

于 2020-11-19T22:11:39.650 回答