adb,scrcpy,ping,tracert,

1、adb配置:

3种:模拟器,USB,WiFi
https://testerhome.com/topics/18450/edit
问题:连接ADB不显示设备列表,https://www.cnblogs.com/sanshuimiao/p/7809946.html

配置path:
D:\chenhuan\Android\adb;

adb start-server
adb kill-server
>netstart -ano | findstr "5.37"

adb shell <command命令>   # 登录默认设备,只有一台设备时
adb -s <需要登录的设备名称> shell <command命令>   # 登录指定设备,当存在多台设备时

adb sync <directory>   同步更新,例如adb sync /data 若没有指定目录,则默认更新/data和/system
adb reboot 重启设备
adn help

1:adb connect 192.168.1.XXX(xxx代表你机器的ip)
2:adb root    
adb remount   # 获取文件的读写权限,重新挂载,置于可写入模式,默认是只读模式。这个命令只适用于被root设备,
执行 adb root 后 可能会自己断开连接 所以需要adb disconnect 192.168.1.XXX
再adb connect 192.168.1.XXX直到连接上为止
3:adb shell
连接上后adb shell进入 发现前面不是# 输入su 然后ctrl+c退出
4:抓取上层log:
adb shell logcat > d:/android.txt (放到那个目录是你自己决定 我放到d 盘)
5:抓取驱动log(内核)
   adb shell cat /proc/kmsg > d:/kernel.txt 

删除系统应用:
adb shell
#cd /system/app
#ls
rm -rf Launcher_lf.apk


adb push G:\蒋工\Launcher_mg3.apk  /system/app
adb push G:\蒋工\framework.jar /system/framework
adb push C:\Users\ch\Desktop\301\2016-1011文件\hwcomposer.rk30board.so /system/lib/hw

1、端口转发: 1、Android -> PC,2、PC -> Android

————————1、Android -> PC
1. 设置转发规则
# 将 Android设备的 8080端口 的TCP请求转发到 PC主机的 8000端口
adb reverse tcp:8080 tcp:8000
# 2. 查看所有已设置的转发规则
adb reverse --list
# 3. 移除转发规则
# 移除指定的 Android设备 端口转发规则(tcp:8080 为 Android设备 的端口)
adb reverse --remove tcp:8080    
# 移除所有的转发规则
adb reverse --remove-all

————————2、PC -> Android
adb forward tcp:8000 tcp:8080
adb forward --list        
adb forward --remove tcp:8000
adb forward --remove-all

举例:
1、场景应用举例: 在 PC 端执行“python3 -m http.server 8000”, 在 8000 端口 开启 python 自带的一个 HTTP 服务器,再执行“adb reverse tcp:8080 tcp:8000”命令设置 Android 到 PC 的端口转发,在 Android 设备浏览器访问“http://localhost:8080”,直接就访问到了 PC 端 HTTP 服务器。

2、安装与卸载:install

————————1、安装与卸载: -r 表示替换当前的已安装的版本,-k 表示卸载后保留 APP 的数据和缓存
adb install ***.apk
adb install -r -t c:\***.apk路径    覆盖安装
adb uninstall -k ***.apk包名        保留数据

3、文件传输:push,pull

注意:
adb push/pull 之前有些设备要先获取权限,adb remount;要先以root身份进入,先执行adb root,在执行adb remount;adb shell 下不能使用adb push/pull ,需要先exit退出
adb push <文件本地路径> <远程路径/sdcard/>
adb pull 远程路径 本地路径

——————1、推送文件: PC -> Android
adb push aa.txt /mnt/sdcard/        # 把 aa.txt 文件上传到 /mnt/sdcard/ 目录下, 并以原文件名保存
adb push aa.txt /mnt/sdcard/bb.txt  # 把 aa.txt 文件上传到 /mnt/sdcard/ 目录下, 以 bb.txt 命名保存
    
adb push aaDir /mnt/sdcard/bbDir    # 把文件夹 aaDir 上传到 /mnt/sdcard/bbDir, 
                                    # 如果 bbDir 文件夹存在, 保存为 /mnt/sdcard/bbDir/aaDir
                                    # 如果 bbDir 文件夹不存在, 保存为 /mnt/sdcard/bbDir    
        
——————2、拉取文件: Android -> PC
adb pull /mnt/sdcard/aa.txt         # 把 /mnt/sdcard/aa.txt 文件拉取到 当前目录, 并以原文件名保存
adb pull /mnt/sdcard/aa.txt aaDir/  # 把 /mnt/sdcard/aa.txt 文件拉取到 ./aaDir/ 目录下, 并以原文件名保存
adb pull /mnt/sdcard/aa.txt bb.txt  # 把 /mnt/sdcard/aa.txt 文件拉取到 当前目录, 保存为 bb.txt
    
adb pull /mnt/sdcard/aaDir          # 把 /mnt/sdcard/aaDir 文件夹拉取到 当前目录, 并以原文件夹名保存
adb pull /mnt/sdcard/aaDir bbDir    # 把 /mnt/sdcard/aaDir 文件夹拉取到 本地,
                                        # 如果 bbDir 文件夹存在, 保存为 ./bbDir/aaDir
                                        # 如果 bbDir 文件夹不存在, 保存为 ./bbDir    

4、日志输出: logcat

adb logcat [options] [filter-spec]

adb shell
logcat

adb shell               # 先登录到远程 shell 环境
getprop                 # 再执行命令(获取设备的属性信息)

adb shell getprop       # 获取设备的属性信息

adb shell常用的:

官网:https://developer.android.google.cn/studio/command-line/adb?hl=en
https://blog.csdn.net/xietansheng/article/details/86675136

am-Activity管理命令,pm-包管理命令,wm-窗口命令,屏幕截图screencap,屏幕录制screenrecord,getprop-设备信息,monkey,其他 Shell 命令: /system/bin

adb shell 命令的使用(am、pm、wm、screencap、screenrecord、monkey等)

许多 Linux 系统的命令在 Android 系统中都可以使用,Linux 系统常用命令参考:

下面介绍几个 Android 系统特有的几个实用的命令(am, pm, wm, ...

简单:
# 启动应用:
adb shell am start -n com.helloshan.demo/.MianActivity  要知道具体的软件的包名及入口才可以打开。
# 列出手机装的所有app的包名:
adb shell pm list packages

(1)1、am

am是 Activity 管理命令,可以使用该命令执行各种系统操作,例如 启动Activity、强行停止进程、开启服务、发送广播等。Activity Manager(am)命令官网介绍

am help

adb shell am restart
adb shell am dumphead   # 将进程pid的堆信息输出到file
——————————1、启动 Activity: am start <intent>  
intent 参数:
    -n      # component, intent 组件, 格式为: "包名/组件名", 例如 "com.example.app/.StartActivity"
    -a      # action, intent 动作, 例如 "android.intent.action.VIEW"
    -c      # category, intent 类别, 例如 "android.intent.category.BROWSABLE"
    -f      # flags, 和 intent.setFlags(int) 方法相同    
    -d      # data_uri,  intent 数据URI, 例如 "file:///mnt/sdcard/aa.png"
    -t      # mime_type, intent MIME类型, 例如 "image/png"    
    -e      # 和 --es 相同
    --esn   # 添加 null extra,     格式: --esn extra_key
    --es    # 添加 string extra,   格式: --es extra_key string_value
    --ei    # 添加 int extra,      格式: --ei extra_key int_value
    --el    # 添加 long extra,     格式: --el extra_key long_value
    --ef    # 添加 float extra,    格式: --ef extra_key float_value
    --ez    # 添加 boolean extra,  格式: --ez extra_key boolean_value
    --eu    # 添加 uri extra,      格式: --es extra_key uri_value

命令示例:
    # 让手机默认浏览器打开一个网页
    am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d https://m.baidu.com    
    # 打开电话拨号盘
    am start -a android.intent.action.DIAL -d tel:10086    
    # 打电话
    am start -a android.intent.action.CALL -d tel:10086    
    # 打开微信, 微信(v6.7.3)的主入口 Activity 为 com.tencent.mm.ui.LauncherUI
    am start -n com.tencent.mm/.ui.LauncherUI    
    # 打开微信(完整的启动 APP 命令)
    am start -n com.tencent.mm/.ui.LauncherUI -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
    
    
——————————2、启动服务:am startservice <intent>,参数参考am start 命令中的介绍
# 启动包名为 com.example.app 的 APP 中的 com.example.app.MyService 服务
    am startservice -n com.example.app/.MyService


——————————3、发送广播:am broadcast <intent>
# 发送 SD 卡挂载完成的广播
    am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///mnt/sdcard/


——————————4、终止进程:am kill <package>  或  am kill-all
    # 终止与包名 com.example.app 关联的所有进程
    am kill com.example.app    
    # 终止所有后台进程
    am kill-all

——————————5、强行停止应用:am force-stop <package>
# 强行停止与包名 com.example.app 关联的所有应用
    am force-stop com.example.app

(2)pm

pm是包管理命令,即应用管理器,可以使用该命令对设备的软件包(APP)进行管理,例如安装、查看、卸载等。Package Manager(pm)命令官网介绍

adb shell pm hide     # 隐藏应用
adb shell pm unhide   # 显示应用
adb shell pm get-install-location   # 获取安装位置
adb shell pm clear (apk包名) # 清除APP数据
——————————1、查看软件包列表:pm list packages [options] [package_name_filter]
options 常用参数:
    -f      # 查看它们关联的文件;————安装apk到内部系统
    -d      # 过滤, 只显示停用软件的包(disabled)
    -e      # 过滤, 只显示启用的软件包(enabled)
    -s      # 过滤, 只显示系统的软件包(system)————安装apk到共享快存储,如sdcard
    -3      # 过滤, 只显示第三方的软件包(third)
    -i      # 查看软件包的安装器
    -u      # 包含已卸载的软件包
    -l      # 安装过程,持有转发锁
    -g      # 准许apkmanifest中的所有权限
命令示例:
    pm list packages                # 列出所有已安装的软件包
    pm list packages com.example    # 列出所有包名包含 com.example 的软件包
    pm list packages -3             # 列出所有第三方软件包(非系统自带的, 自己安装的APP)
    pm list packages -d             # 列出所有被停用的软件包


——————————2、安装软件包:
命令格式: pm install [options] <apk_path>
options 常用参数:
    -r      # 替换已安装的包,保留其数据
    -d      # 允许版本降级安装(只限 debug 包),安装低版本apk
    -g      # 授予所有运行时权限
    -t      # 进行安装测试apk
apk_path 参数: 注意这里的 apk 路径指的是 Android 文件系统中的路径
命令示例:
    pm install /sdcard/demo.apk             # 从 SD 卡中安装 APK
    pm install /data/local/tmp/temp.apk     # 从 Android 设备临时目录安装一个 APK
    pm install -r /sdcard/demo.apk          # 安装 APK, 替换掉当前版本
    
——————————3、卸载软件包
命令格式: pm uninstall [options] <package>
options 参数:
    -k      # 移除软件包后保留其数据和缓存目录
命令示例:
    pm uninstall com.example.app        # 卸载软件包, 并删除数据
    pm uninstall -k com.example.app     # 卸载软件包, 保留其数据


——————————4、删除软件包数据
命令格式: pm clear <package>
命令示例:
    pm clear com.example.app            # 删除软件包关联的所有数据

    
——————————5、停用/启用软件包
停用:pm enable <package_or_component>
启用:pm disable <package_or_component>    
命令示例:
    pm enable com.example.app           # 停用软件包, 停用后 APP 启动图标将被隐藏
    pm disable com.example.app           # 启用软件包

——————————6、软件包授权
命令格式: pm grant <package> <permission>
命令示例:
    # 给软件包授予写外部存储器的权限
    pm grant com.example.app android.permission.WRITE_EXTERNAL_STORAGE
——————————7、软件包撤销权限
命令格式: pm revoke <package> <permission>
命令示例:
    # 撤回软件包读写外部存储器的权限
    pm revoke com.example.app android.permission.READ_EXTERNAL_STORAGE
    pm revoke com.example.app android.permission.WRITE_EXTERNAL_STORAGE

(3)wm

wm窗口管理命令可以获取屏幕的 分辨率像素密度 等信息,甚至可以临时修改屏幕的 分辨率像素密度 等参数,可以很方便地查看 APP 在不同像分辨率和素密度手机/平板上的显示效果。

1、查看 屏幕分辨率 和 像素密度
wm size                 # 查看屏幕的 分辨率, 单位: px
wm density              # 查看屏幕的 像素密度, 单位: dpi(dots per inch)

2、修改 屏幕分辨率 和 像素密度
wm size 720x1280        # 把屏幕分辨率(宽x高)修改为: 720px * 1280px
wm size 360dpx640dp     # 把屏幕分辨率(宽x高)修改为: 360dp * 640dp
                        # dp 单位将根据当前 density 自动转换为 px
wm density 360          # 把屏幕像素密度改为 360 dpi
wm size reset           # 撤销对屏幕分辨率的修改(改回真实的物理分辨率)
wm density reset        # 撤销对屏幕像素密度的修改(改回真实的像素密度)

屏幕尺寸、分辨率、像素密度 这三个参数时相互关联的,可以由其中两个参数算出第三个参数,像素密度的单位是 dpi(即每英寸的像素点数量),因此有下列公式:

                    像素点数(px)
物理尺寸(inch) = ---------------------
                  像素密度(px/inch)

修改 分辨率 和 像素密度,实际上修改后导致的是屏幕尺寸的变化,当然这个改变是虚拟的,只不过是修改成和指定尺寸屏幕的显示效果(显示内容的多少)一致:

  • 分辨率相同,像素密度(density) 越大,屏幕尺寸越小,显示的内容越少(dp/sp 作为显示单位)。
  • 分辨率相同,像素密度(density) 越小,屏幕尺寸越大,显示的内容越多(dp/sp 作为显示单位)。

(4) 屏幕截图: screencap

screencap命令可以对设备显示屏当前显示的内容进行截屏

命令格式: screencap [options] <save_file>
options 参数:
    -h      # 输出帮助信息
    -p      # 保存为 png 格式
    -d      # 指定显示器(多屏幕显示的情况), 默认为0
命令示例:
    screencap /mnt/sdcard/demo.png      # 截屏保存到 SD 卡
# PS: 命令是在 Android 设备中, 保存的文件路径是 Android 系统的文件路径;
#     如果保存的文件名后缀为 .png, 将自动保存为 png 格式;
#     如果没有给定保存的文件位置, 截屏结果将输出到标准输出流。


——————不登录远程 shell,直接截屏并把图片拉取到 PC 本地:
# 截屏临时保存到 Android 系统的临时目录
adb shell screencap /data/local/tmp/demo.png
# 拉取截取的图片保存到本地
adb pull /data/local/tmp/demo.png
# 删除在 Android 系统临时目录生成的截屏
adb shell rm /data/local/tmp/demo.png    

(5)屏幕录制: screenrecord

screenrecord命令是一个录制 Android 设备(Android 4.4+ 版本)屏幕视频的实用工具,该命令将屏幕录制成 MPET-4 格式的视频文件。

PS: 有些手机系统把 screenrecord 命令移除了,通常移除了该命令的手机系统都会另外提供自带的录屏工具,但需要在手机上操作录屏。

命令格式: screenrecord [options] <save_file>
options 参数:
    --help          # 输出帮助信息
    --size          # 录制的尺寸, 宽x高, 默认值是设备屏幕的原生分辨率(如果支持), 
                    # 如果不支持, 则使用 1280x720。
    --bit-rate      # 设置录制视频的比特率(bit/s), 比特率越高视频质量越高, 
                    # 但文件存储也会变大。例如设置为 4Mbps: --bit-rate 4000000
    --time-limit    # 设置最大录制时长(单位为秒), 默认值和最大值均为 180(3分钟)    
    --verbose       # 录制时显示日志信息    
    --rotate        # 旋转 90 度输出(此功能为实验性)
结束录制: 录制时按下 Ctrl+C 或 到达 --time-limit 指定时间

命令示例:
    # 录制屏幕, 保存到 SD 卡
    screenrecord /sdcard/demo.mp4    
    # 录制屏幕, 指定录制宽高为 720x1280, 比特率为 4Mbps, 录制 30 秒
    screenrecord --size 720x1280 --bit-rate 4000000 --time-limit 30

————————录制屏幕,完成后拉取到 PC 本地:
# 录制屏幕, 保存到 SD 卡
adb shell screenrecord /sdcard/demo.mp4
# 把 SD 卡保存的录屏拉取到 PC 本地
adb pull /sdcard/demo.mp4   

(6)获取设备属性信息: getprop

getprop命令用于获取 Android 系统的各项属性信息。语法格式:getprop [NAME [DEFAULT]]

getprop                             # 列出所有属性信息

getprop ro.product.manufacturer		# 获取设备的厂商, 例如: HUAWEI
getprop ro.product.brand            # 获取设备的商标, 例如: HUAWEI
getprop ro.product.model            # 获取设备的型号, 例如: BLA-AL00

getprop ro.build.version.release    # 获取设备的 Android 版本, 例如: 8.1.0
getprop ro.build.version.sdk        # 获取设备的 SDK Version, 例如: 27

getprop ro.boot.serialno            # 获取设备的序列号, 例如: 8FE0917B20005668
getprop ro.board.platform           # 获取设备的 CUP 平台, 例如: kirin970

getprop dalvik.vm.heapstartsize     # 虚拟机进程的分配的初始堆内存大小
getprop dalvik.vm.heapgrowthlimit   # 虚拟机进程的堆内存增长极限大小
getprop dalvik.vm.heapsize          # 虚拟机进程的堆内存大小

自动化测试: monkey

Usage: monkey [options] <COUNT>

options 参数:
    -p <allowed_package>            # 允许测试的软件包, 可以指定多个 -p 参数支持多个软件包
    -c <main_category>              # 主分类, 可以指定多个 -c 参数
    
    --ignore-crashes                # 忽略崩溃, 继续执行事件
    --ignore-native-crashes         # 忽略 native 崩溃, 继续执行事件
    --ignore-timeouts               # 忽略超时, 继续执行事件
    --ignore-security-exceptions    # 忽略安全异常, 继续执行事件
    --monitor-native-crashes        # 监控 native 崩溃
    
    --kill-process-after-error      # 发生错误时杀死进程
    --hprof
    --match-description <text>
    
    --pct-touch <percent>           # 触摸事件百分比, 例如指定触摸事件比例为 30%, 格式为: --pct-touch 30
    --pct-motion <percent>          # 手势动作事件百分比, 所有事件百分比之和不能超过 100%
    --pct-trackball <percent>       # 轨迹事件百分比 
    --pct-syskeys <percent>         # 系统按键事件百分比
    --pct-nav <percent>             # 基本导航事件百分比
    --pct-majornav <percent>        # 主要导航事件百分比
    --pct-appswitch <percent>       # APP 切换事件百分比
    --pct-flip <percent>            # 弹事件百分比
    --pct-anyevent <percent>        # 其他事件百分比
    --pct-pinchzoom <percent>       # 缩放(捏)事件百分比
    --pct-permission <percent>      # 权限事件百分比
    
    --pkg-blacklist-file <file>     # 
    --pkg-whitelist-file <file>     # 
    
    --wait-dbg                      # 如果 adb 断开, 等待 adb 连接, 直到 adb 恢复连接后继续执行 monkey
    --dbg-no-events                 
    --setup scriptfile
    -f <scriptfile>                 # 指定用于测试的脚步文件, 可以指定多个 -f 参数
    --port <port>
    -s <seed>                       # 产生伪随机事件的种子, 相同的 -s 产生的事件流相同, 格式(可指定多个-s): -s 1
    -v                              # 反馈信息级别, -v 越多个, 输如的日志信息越详细, 最多支持 3 个 -v
    --throttle <ms>                 # 事件之间的间隔(单位为毫秒), 例如 200毫秒 的格式: --throttle 200
    --randomize-throttle            # 随机事件间隔时间
    --profile-wait <ms>             # 
    --device-sleep-time <ms>        # 
    --randomize-script              #
    --script-log                    # 
    --bugreport                     # 
    --periodic-bugreport            # 
    --permission-target-system      # 
# 在 com.example.app 这个 APP 上随机发送 10000 个事件
monkey -p com.example.app 10000
    
# 事件间隔10毫秒, 随机发送 10000 个事件
monkey -p com.example.app --throttle 10 10000
    
# 触屏事件占 30%, 手势事件占 10%, 发送 10000 个事件
monkey -p com.example.app --pct-touch 30 --pct-motion 10 10000

其他 Shell 命令: /system/bin

acpi              am                     app_process      app_process32
app_process64     applypatch             appops           appwidget
atrace            awk                    base64           basename
bcc               blockdev               bmgr             bu
bugreport         bugreportz             bunzip2          bzcat
bzip2             cal                    cat              chcon
chgrp             chmod                  chown            chroot
chrt              cksum                  clear            cmd
cmp               comm                   content          cp
cpio              crash_dump32           crash_dump64     cut
dalvikvm          dalvikvm32             dalvikvm64       date
dd                debuggerd              dex2oat          dexdiag
dexdump           dexlist                df               diff
dirname           dmesg                  dos2unix         dpm
du                dumpsys                echo             egrep
env               expand                 expr             fallocate
false             fgrep                  file             find
flock             fmt                    free             getenforce
getevent          getprop                grep             groups
gunzip            gzip                   head             hid
hostname          hw                     hwclock          id
ifconfig          ime                    incident         inotifyd
input             insmod                 ionice           iorenice
ip                ip-wrapper-1.0         ip6tables        ip6tables-restore
ip6tables-save    ip6tables-wrapper-1.0  iptables         iptables-restore
iptables-save     iptables-wrapper-1.0   keystore_cli_v2  kill
killall           ld.mc                  linker           linker64
linker_asan       linker_asan64          ln               load_policy
locksettings      log                    logcat           logname
logwrapper        losetup                ls               lshal
lsmod             lsof                   lspci            lsusb
md5sum            media                  microcom         mkdir
mkfifo            mkfs.ext2              mkfs.ext3        mkfs.ext4
mknod             mkswap                 mktemp           modinfo
modprobe          monkey                 more             mount
mountpoint        mv                     ndc              ndc-wrapper-1.0
netstat           newfs_msdos            nice             nl
nohup             oatdump                od               otapreopt
otapreopt_script  paste                  patch            patchoat
perfetto          pgrep                  pidof            ping
ping6             pkill                  pm               pmap
printenv          printf                 ps               pwd
readlink          realpath               reboot           renice
requestsync       resize2fs              restorecon       rm
rmdir             rmmod                  run-as           runcon
schedtest         screencap              screenrecord     secdiscard
secilc            sed                    sendevent        sensorservice
seq               service                setenforce       setprop
setsid            settings               sh               sha1sum
sha224sum         sha256sum              sha384sum        sha512sum
sleep             sm                     sort             split
start             stat                   stop             strings
stty              svc                    swapoff          swapon
sync              sysctl                 tac              tail
tar               taskset                tc               tc-wrapper-1.0
tee               telecom                time             timeout
toolbox           top                    touch            toybox
tr                true                   truncate         tty
tzdatacheck       uiautomator            ulimit           umount
uname             uniq                   unix2dos         uptime
usleep            uudecode               uuencode         vmstat
vr                wc                     which            whoami
wm                xargs                  xxd              yes
zcat

使用 WIFi 无线连接:

Scrcpy 使用 adb 与 Android 设备通讯,而 adb 本身是支持无线连接的。因此除了 USB 数据线之外,我们也能无线使用。前提是需要保证手机和电脑处于同一局域网 (连接到相同的 WiFi 路由器),步骤如下:

  1. 查询设备当前的 IP 地址 (设置 →关于手机→状态)
  2. 启用 adb TCP/IP 连接,执行命令:adb tcpip 5555,其中 5555 为端口号
  3. 拔掉你的数据线
  4. 通过 WiFi 进行连接,执行命令:adb connect 设备IP地址:5555
  5. 重新启动 scrcpy 即可
  6. 如果 WiFi 较慢,可以调整码率:scrcpy -b 3M -m 800,意思是限制 3 Mbps,画面分辨率限制 800,数值可以随意调整。
  7. 如需切换回 USB 模式,执行:adb usb
adb tcpip 5555
adb connect 192.168.0.106:5555
adb disconnect 192.168.0.106:5555  
    
adb shell monkey

adb shell pm list packages
com.android.calculator2

adb shell
 cat /data/anr/
 cat /data/anr/traces.txt
exit
adb shell  cat /data/anr/traces.txt

强制关闭APP:adb shell am force-stop com.*** | less
        

2、scrcpy工具:scrcpy.exe

https://www.appinn.com/scrcpy-gui/

1、设置软件ScrcpyGui:镜像管理,镜像配置
2、在命令窗口:scrcpy

​ scrcpy就是通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何root权限,不需要在手机里安装任何程序。scrcpy同时适用于GNU / Linux,

​ 可以方便地利用 Scrcpy 来测试 APP 应用、玩游戏、高效完成一些需要在手机上进行的复杂工作、更高效地办公;也能更方便地进行 Android 屏幕录像截屏;甚至还能方便你上班时摸鱼划水。应用场景非常多,

GitHub,开源项目:https://github.com/Genymobile/scrcpy
下载地址:https://github.com/Genymobile/scrcpy/releases

Scrcpy 快捷键列表
切换全屏模式 Ctrl+F
将窗口调整为1:1(完美像素) Ctrl+G
调整窗口大小以删除黑色边框 Ctrl+X | 双击黑色背景
设备 HOME Ctrl+H | 鼠标中键
设备 BACK Ctrl+B | 鼠标右键
设备 任务管理 键 (切换APP) Ctrl+S
设备 菜单 Ctrl+M
设备音量+ Ctrl+
设备音量- Ctrl+
设备电源键 Ctrl+P
点亮手机屏幕 鼠标右键
复制内容到设备 Ctrl+V
启用/禁用 FPS 计数器(stdout) Ctrl+i
安装APK 将 apk 文件拖入投屏
传输文件到设备 将文件拖入投屏(非apk)

注:在 macOS 平台上,请使用 cmd 代替 Ctrl

屏幕录像:

如有需要,你也可以通过命令对连接好的安卓手机进行录屏,并将视频保存为 .mp4 格式。

  • 投屏并录屏:scrcpy -r file.mp4
  • 不投屏只录屏:scrcpy -Nr file.mp4

3、ping

https://blog.csdn.net/iteye_2116/article/details/82509116

0、

利用“ping”命令可以检查网络是否连通,可以很好地帮助用户分析和判定网络故障。

  • 1、ping 127.1,如果不通,一般是网络硬件的问题。

  • Ping网关IP,Ping远程IP,Ping DNS IP检查内部网DNS否工作

  • 2、ping本机内网的ip地址,如果不通,一般是网卡的驱动问题。
    ping 19.168.3.1
    显示内容:Request timed out则表明网卡安装或配置问题

  • 3、ping外网的ip地址,如果不通,一般是宽带的问题。是否连通内网或者外网
    ping baidu.com

1、直接输入ping回车就会有各参数说明:

  • -t ,-l,-n
  • pingIP:ping -t -n 6 192.168.0.103
  • ping主机域名:ping blog.csdn.net/huyuyang6688

2、下面截个图来更直观的举个例子:

其中:
①方框中就是ping的主机地址,我ping的是自己的电脑;
②“32”就是一次向目标主机发送的数据报的大小(可以用-l 参数修改);
③TTL就是数据报的生存时间(Time To Live ),TTL的初值通常是系统缺省值,数据报经过每个路由器时TTL的值都会减1,所以通过TTL的最终值可以计算出数据报从本地到目的主机所经过的路由器的个数。经过路由器个数=2a -TTL最终值(其中2a必须大于等于TTL最终值且最后计算出的路由器个数小于等于TTL最终值),我这里ping的是自己的电脑所以经过的路由器个数为:26-64=0个;再举个几例子,假如最终的TTL值为62,则中间经过的路由器个数为26-62=2个;假如TTL最终值为30,则中间经过的路由器个数为25-30=2个。
​ 此外,TTL的值还可以判断对方的操作系统类型,默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Win7系统的TTL值是64,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。
④表示发送过程中丢失的数据情况。
⑤每一次发送数据报所用时延情况(用来判断网络连接速度)。

3、结果分析

1、字节代表数据包的大小,时间顾名思义就是返回时间,TTL这里稍微说一下:
2、TTL的意思就是数据包的生存时间,当然你得到的这个就是剩余的生存时间。
TTL用来计算数据包在路由器的消耗时间,因为现在绝大多数路由器的消耗时间都小于1s,而时间小于1s就当1s计算,所以数据包没经过一个路由器节点TTL都减一。
3、不同的操作系统默认下TTL是不同的。
默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。

  • (1)若是返回给我的数据包的TTL值应该为64(一般都是找2^n且离返回值最近的那个值),我得到的时候TTL为47,那么途中则经过了64-47=17个路由器。
    (2)ping了自己的ip,发送数据包不需要经过路由器,所以TTL值为64,也就是说我的数据包生存时间默认为64。

  • 平均时间如果和最短时间很接近,表示速度比较均匀,

4、tracert

posted @ 2020-02-12 10:23  吃一口冰淇淋  阅读(1629)  评论(0编辑  收藏  举报