Adb shell命令小结

写在前面:为了提高自己专业水平,小小的总结,希望自己可以不断的提高!


Adb命令实践

Android 调试桥

Adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。

Tips: 在 android_sdk/platform-tools/ 中找到 adb 工具,然后根据其具体的路径配置好环境变量。然后启动cmd 输入‘adb’即可查看是否配置成功。

Adb 的工作原理

启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037 与 adb 服务器通信。

Adb shell

Android 设备底层是 linux 系统。 shell 是 linux 系统的字符交互界面。

adb shell
 
# -s 进入指定设备shell
adb  -s 127.0.0.1:62001 shell
 
#退出adb shell
exit

#进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限
root@android:/ #
 
shell@mx4:/ $

备注:root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,卸载系统预装App是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root。

利用命令行安装apk文件

adb -s install | -r   
其中:-r 覆盖原安装文件; -s 可以指定设备

 
#默认安装
adb install "C:\Users\test.apk"
 
#覆盖安装
adb install -r  "C:\Users\test.apk"
 
#指定设备安装
adb  -s 127.0.0.1:62001 install  C:\Users\test.apk"
 

如遇到报错:Failure [INSTALL_FAILED_INVALID_URI]

解决方案: cmd命令行下执行以下命令:

· 1 adb remount

· 2 adb shell

· 3 cd /data

· 4 chmod 777 local

  5 重新安装apk

卸载APK

adb uninstall  | -k    卸载软件,其中:包含-k 参数 表示卸载软件但是保留配置和缓存文件.
 
adb uninstall  com.test.test

adb shell cmd package uninstall -k com.talkingdata.demo

网络adb连接

adb connect ip:port

端口转发

adb tcp:port tcp:port

进入fastboot

adb reboot bootloader

查看设备信息(CPU信息等)

adb shell getprop | grep product

打印Activity栈顶信息

adb shell dumpsys activity | grep com.xxx.xxx.xx

查看设备上面安装的应用包名

adb shell pm list package

文件读取写入

#将文件从PC写入到设备

adb push <本地路径> <设备路径>
eg:
adb push C:\Users\Shuqing\Desktop\kyb.txt /sdcard
C:\Users\Shuqing\Desktop\kyb.txt: 1 file pushed. 0.1 MB/s (462 bytes in 0.005s)

#将文件从设备读取到PC

adb pull  
eg:
adb pull /sdcard/server.log  C:\Users\Shuqing\Desktop
/sdcard/server.log: 1 file pulled. 0.0 MB/s (196 bytes in 0.004s)



注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:

C:\Users\Shuqing>adb pull /sdcard/server.log  D:\\
adb: error: cannot create file/directory 'D:\\': No such file or directory

屏幕截图

$ adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png  C:\Users\Administrator\Desktop

adb服务启动和关闭

adb kill-server                        关闭adb服务
adb start-server                      开启adb服务

Tips:如果5037端口被占用可以使用如下命令释放端口

C:\Users\Administrator> netstat -ano | findstr "5037"
  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       11072
  TCP    127.0.0.1:5037         127.0.0.1:59519        TIME_WAIT       0
 
taskkill -f -pid XXX

adb取出安装在手机中的apk文件

#第一步:利用adb shell pm list packages命令查看包名
$ adb shell pm list packages
    package:android
    package:cn.wps.moffice
    package:com.android.backupconfirm

#第二步:找到 apk 的位置
$ adb shell pm path com.tence01.mm
package:/data/app/com.tence01.mm-1.apk

#第三步:利用pull将apk文件导出到本地文件夹apks
$ adb pull /data/app/com.tence01.mm-1.apk D:\apks

查看系统服务相关内容

#查看显示手机当前目录的所有内容 注意,连接上手机后要打开调试功能,不然就会出错。
$ adb shell ls
或者 
$ adb shell
ls

查看进程

adb shell ps

查看实时资源占用情况

adb shell top

获取设备的ID和序列号:

#获取手机型号
adb shell getprop | grep product
adb shell getprop ro.product.model  
#获取手机序列号
adb get-serialno

电池信息:

#Android 系统运行了很多系统服务,我们可以用这个命令来查看battery信息
$ adb shell dumpsys battery
Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  Max charging current: 500000
  Max charging voltage: 5000000
  Charge counter: 2926692
  status: 2
  health: 2
  present: true
  level: 88
  scale: 100
  voltage: 4300
  temperature: 307
  technology: Li-poly

其中:

                “AC powered:false”:表示是否连接电源供电。

                “USB powered:true”:表示是否使用USB供电。

                “status:2”:表示电池充电情况,5代表电池电量是满的。

                “health:2”:表示电池的健康状况,2代表良好。

                “level:5”:表示电池现在电量的百分比,我这里手机只有5%的电量。

                “scale:100”:表示电池电量的最大值,如果电池有损耗,这里的值可能会降低。

Wifi信息:查看手机无线网络的信息,里面内容太多,用 more 来决定翻页查看

$ adb shell dumpsys wifi

屏幕分辩率

adb shell wm size

屏幕密度:

adb shell wm density

显示屏参数

adb shell dumpsys window displays

IMEI

adb shell dumpsys iphonesubinfo

查看电源管理的相关信息

$ adb shell dumpsys power

查看电话相关信息

$ adb shell dumpsys telephony.registry

(1)“mCallState”:表示呼叫状态。0,表示待机;1,表示来电尚未接听;2,表示电话占线。

                (2)“mCallIncomingNumber”:表示最近一次来电的电话号码。

                (3)“mServiceState”:表示服务状态。0,表示正常使用;1,表示电话没有连接任何电信运营网络;2,表示只能拨打紧急呼叫号码;3,表示电话已关机。

                (4)“mSignalStrength”:表示信号强度信息。

                (5)“mMessageWaiting”:表示是否在等待无线电信息。

                (6)“mCallForwarding”:表示是否启用了呼叫转移。

                (7)“mDataActivity”:表示无线数据通话情况。0,表示未通话;1,表示正在接收IP PPP信号;2,表示正在发送IP PPP信号;3,表示正在发送和接收IP PPP信号。

                (8)“mDataConnectionState”:表示无线数据连接情况。0,表示无数据连接;1,表示正在创建数据连接;2,表示已连接;3,表示挂起状态,已经创建好连接,但IP数据通信暂无法使用。

                (9)“mDataConnectionPossible”:表示是否有数据连接。

                (10)“mDataConnectionReason”:表示数据连接的原因。

                (11)“mDataConnectionApn”:表示APN(Access Point Name),接入点名称。

                (12)“mDataConnectionLinkProperties”:表示数据连接的链路属性。

                (13)“mDataConnectionLinkCapabilities”:表示数据链路连接的能力。

                (14)“mCellLocation”:表示基站的相关信息。

                (15)“registrations”:表示登记记录计数。

总结:

  1. adb是自动化非常重要的一个工具
  2. 目前很多PC客户端手机助手也是基于adb连接原理进行封装的。
  3. 可以将常用的adb命令封装成bat命令,随时可以运行。

如: 

adbdevices.bat 包含以下代码:
adb devices
pause

AdbConnect.bat包含以下代码:
adb connect 127.0.0.1:62025
adb devices
pause

 

你可能感兴趣的:(ADB,Shell,adb,linux,shell)