adb 常用命令

1,950 阅读5分钟

adb命令

文件管理

  • adb 连接设备
usb 连接手机 
adb tcpip 5555
adb shell ifconfig wlan0
adb connect 手机ip地址
  • 查看系统所有属性的配置表
busybox vi build.prop
  • 获取手机系统信息( CPU,厂商名称等)
adb shell "cat /system/build.prop | grep "product""
  • 获取手机系统版本信息
adb shell "cat /system/build.prop | grep "version""

// 系统固件版本
ro.build.version.incremental=eng.iipjenkins.20191018.155227
ro.build.version.sdk=25
ro.build.version.preview_sdk=0
ro.build.version.codename=REL
ro.build.version.all_codenames=REL
ro.build.version.release=7.1.2
ro.build.version.security_patch=2017-04-05
ro.build.version.base_os=
ro.opengles.version = 196609
ro.opengles.version=196609
ro.rksdk.version=RK30_ANDROID7.1.2-SDK-v1.00.00
  • 查看已安装应用的versionCode
dumpsys package com.cvte.mirror.speech | grep  versionCode
  • 截图
adb shell screencap /sdcard/11.png 
adb pull /sdcard/11.png
  • 安装卸载
//安装时,保留原有数据
adb install -r hello.apk 

//卸载,但是保留数据
adb uninstall -k com.clear.hello
  • 从电脑上复制文件到设备
//  把 a.png 从电脑上拷贝到设备sd卡上
adb push ~/a.png /mnt/sdcard/

// 把 a.png 从电脑上拷贝到设备sd卡上并重命名为 b.png
adb push ~/a.png /mnt/sdcard/b.png

// 把 pic目录下所有文件从电脑上拷贝到设备sd卡上
adb push ~/pic/ /mnt/sdcard/
  • 从设备复制文件到电脑
// 把 a.png 从设备sd卡上拷贝到电脑上
adb pull /mnt/sdcard/a.png ~/

// 把 a.png 从设备sd卡上拷贝到电脑上并命名为b.png
adb pull /mnt/sdcard/a.png ~/b.png

// 把pics目录下所有文件从设备sd卡上拷贝到电脑上
adb pull /mnt/sdcard/pics/ ~/pics/
  • 删除某个文件

-f 强制删除文件不需要确认
-r 递归删除文件夹内文件
-i 删除文件前需要确认

adb shell rm /sdcard/1.txt
  • 创建目录
adb shell mkdir /sdcard/temp // 指定 -p 递归创建目录
adb shell mkdir -p  /sdcard/temp/test/abc/hello/
  • 创建文件、移动文件
adb shell touch /sdcard/1.txt

// 拷贝文件1.txt到test目录
adb shell cp /sdcard/1.txt /sdcard/test/

// 移动文件,移动同一目录下文件相当于重命名文件
adb shell mv /sdcard/1.txt /sdcard/2.text

PM命令

  • 查看应用的包名
pm list packages | grep xxx 
  • 查看当前当前包名应用安装的位置
pm list packages -f 包名
pm -lf  | grep 包名
  • 查看应用存放位置
ps // 找到对应的包名
pm path 包名 
  • 清除应用缓存
adb shell pm clear com.clear.hello
  • 列出(系统、第三方)应用包名
adb shell pm list packages -s // 系统

adb shell pm list packages -3  // 第三方

PS命令

查看当前进程信息

ps | grep shop (包名中有shop的进程信息)
kill 进程id 杀死指定进程
ps | grep cvte 

// 查看指定进程信息
adb shell ps -x pid 

AM命令

  • force-stop

force-stop命令杀掉所有用户空间下的包名pkgName相关的信息 一般地,点击home弹出的清理用户最近使用app采取的策略便是force-stop.

am force-stop pkgName
am force-stop --user 2 pkgName //只杀用户userId=2的相关信息
  • 打开指定的Activity
am start cvte.mid.factory/.TestModeSelectorActivity // 打开指定界面

am start com.cvte.mirrordevguidehelper // 打开指定应用

am start -a xxxx // 根据action 启动应用

启动Service

am startservice -n{包(package)名}/{包名}.{服务(service)名称}

am startservice -n com.android.traffic/com.android.traffic.maniservice

发送broadcast

am broadcast -a <广播动作>

// 发送一个网络变化的广播
am broadcast -a android.net.conn.CONNECTIVITY_CHANGE

DM命令

查看应用的各种信息,其中就包含了versionCode

adb shell dumpsys package [PackageName]

adb shell dumpsys package com.tencent.mobileqq | grep versionCode

// 查询当前包名应用是否获取指定权限
dumpsys package check-permission

如果在data 目录下安装了比system/app的app versionCode低的版本,==重启reboot的时候系统会自动选择版本较高的覆盖安装==

查看前台 Activity

adb shell dumpsys activity activities | grep mFocusedActivity

正在运行的 Service

adb shell dumpsys activity services

mount 权限

修改权限 为可读可写

mount -o rw,remount /system

查看系统当前挂载的权限

mount | grep system

输入法

查看已安装的输入法

adb shell ime list -a

切换输入法

appium: adb shell ime set io.appium.android.ime/.UnicodeIME

sougou: adb shell ime set com.sohu.inputmethod.sogou/.SogouIME

adbkeyboard: adb shell ime set com.android.adbkeyboard/.AdbIME

wifi密码

查看wifi保存的密码

/data/misc/wifi

cat wpa_supplicant.conf

系统属性

查看、修改系统属性

getprop | grep mic

setprop sys.hw.cvte.mic.dumpPath /data/mic/

// 修改文件权限
chmod 777 data/

修改系统屏幕方向

mount -o rw,remount /system

cd system
busybox vi build.prop 

// 查找 hwr属性  (vim  / 查找命令)修改屏幕角度方向

Logcat

logcat -c;logcat  // 清空所有缓存信息
 
adb logcat *:E // 需要打印级别为Error的信息

adb shell logcat  > ~/Desktop/signway_err1.log // 打印日志到指定文件

查看系统运行内存信息

Procrank

进入烧录模式

adb shell reboot loader

monkey测试

 adb shell monkey -p [程序包名] -v [事件数量]

Linux 常用命令

  • 查找文件命令

linux系统下 :

find -name "文件名"       
查找一个带 Activity 的文件
find  -name   "*Activity*.java"

mac :

如果在mac系统(Uinux)需要加.代表查找当前目录
find . -name "文件名" 

打开文件或者指定路径下的文件夹
open .
open "指定路径"
  • 查找文件内容
grep -nr "文件内容”   ./
  • 查找指定类型文件的文件内容
find -name "文件名"   |  grep  -nr  "文件内容"
例:find -name " *.mk " | grep  -nr  " baidu "

打包系统签名

  • 系统签名证书的目录是“build/target/product/security”
  • platform.x509.pem platform.pk8
java -jar signapk.jar platform.x509.pem platform.pk8 rawOpenSDKService.apk OpenSDKService.apk

内存检测

procrank

  • 内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
  • VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)是单个进程全部可访问的地址空间
  • RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)是单个进程实际占用的内存大小,对于单个共享库, 尽管无论多少个进程使用,实际该共享库只会被装入内存一次。
  • PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)USS 是一个非常非常有用的数字, 因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小。
  • USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加 使用dumpsys meminfo查看内存信息