我在SD-CARD和我的应用程序上使用它作为日志文件。
是否可以通过adb实时查看所有更改的文件?
与tail -f /sdcard/myfile.log
命令一样。
答案 0 :(得分:7)
这似乎对我有用:
adb shell "while true; do cat; sleep 1; done < /sdcard/myfile.log"
答案 1 :(得分:1)
您可以使用logcat执行此操作。您可以添加一个仅显示应用程序日志条目的视图,并且该视图将不断更新。
答案 2 :(得分:1)
您可以安装busybox,然后安装:
adb shell
tail -f /path/of/your/file
但请记住,您应具有root权限才能安装busybox。如果您使用模拟器,请检查以下内容: How to get root access on Android emulator?
答案 3 :(得分:0)
有一个很棒的应用程序:Terminal IDE。它包含许多linux命令,并且不需要root访问权限。您可以从GooglePlay安装它。是免费的(和开源,GPLv2)。
其最佳功能之一是可以通过telnet
使用它。在手机上启动它,然后输入telnetd
命令。它将启动一个telnet守护进程,默认情况下侦听端口8080。
之后,您可以使用以下命令从PC连接它:(在Windows上使用cygwin)
telnet 192.168.1.8 8080
您应该使用手机的IP地址而不是上述地址。连接成功后,您的PC上将有一个任意大小的终端,可以在您的手机上运行tail -f
命令。以及许多其他内容,例如bash
及其所有内置命令。
答案 4 :(得分: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个字符(因此,egrep
代替了grep
)。
将cat
替换为tail -n 1
。
将--line-buffered
添加到egrep
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}'