赞
踩
前言:
本文主要记述ADB的常用命令,关于ADB用法大全,可参考文末链接
ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。
注: 有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。
小技巧:记不住ADB命令?
ADB 命令的插件 adb-idea
adb devices
adb -s 设备号 其他指令
举例:
adb -s devicel install xxx.apk
adb shell dumpsys activity | findstr "mFocusedActivity"
adb shell dumpsys activity | grep "mFocusedActivity"
adb logcat
adb install xxx.apk
adb install -r xxx.apk
adb install -r -t xxx.apk
adb uninstall com.zhy.app
adb uninstall -k com.zhy.app
adb push 文件名 手机端SDCard路径
例如:
adb push 帅照.jpg /sdcard/
adb pull /sdcard/xxx.txt
adb shell pm list packages
adb shell am start 包名/完整Activity路径
例如:
adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity
adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity -e name zhy
adb shell am start -a "android.intent.action,VIEW" -d "https://www.google.com"
adb shell am broadcast -a "broadcastactionfilter"
-如果需要携带参数(携带一个Intent,key为name):
adb shell am broadcast -a "broadcastactionfilter" -e name zhy
adb shell am startservice "com.zhy.aaa/com.zhy.aaa.MyService"
adb shell screencap /sdcard/screen.png
可以使用screenrecord[options] filename命令来录制屏幕视频,例如:
adb shell screenrecord /sdcard/demo.mp4
启动ADB的2种方式:
export PATH=$PATH:<path to Android SDK>/platform-tools
然后在命令行中输入source ~/.bash_profile或者source ~/.zshrc来更新配置文件。
注意:Android SDK,你可在安卓官网去下载,或者如果你拥有AndroidStudio也会下载过它,它可存放在资源管理器下的任意位置。你知晓它的存放位置即可。
上方的A5R7N18202000063是我的手机设备序列号(手机不同,设备序列号也就不同),device是设备状态。
设备的3种状态:
offline ———设备未连接到adb或者没有响应
device———设备已连接到ADB
no device ———未连接到模拟器/设备
adb -s A5R7N18202000063 install crime.apk
即可安装成功crime.apk文件了。
adb install -r crime.apk
APP卸载后,其缓存文件一般也会被清除。
如果要想保留缓存文件,添加 -k,即:
adb uninstall -k 包名
音视频文件还是应该放在SD卡目录下。 SD卡的路径是/mnt/sdcard/或者/sdcard,/sdcard是/mnt/sdcard的软链接。其中,/mnt/sdcard/DCIM一般用于存放照片,DCIM——Digital Camera Images。但是截图及APP保存图片的位置,一般是在/mnt/sdcard/Pictures。以此类推,视频文件存放在/mnt/sdcard/Movies等。
当我们手机上安装完成了一个APP后,相关的文件存放在下面2个地方:
1):APP本身被存放在/data/app 目录下。
2):文件目录存放在/data/data/<package name>目录下,该目录下存放有数据库、SharedPreference和其他缓存数据。
如果想把手机中的文件拷贝到电脑中,使用**adb pull <remote> [local]**命令。其中,local地址为空,则会拷贝到电脑当前目录下:
例如:
adb pull /sdcard/crime.apk
adb push crime.apk /sdcard/data/data
清除APP数据:
在开发中,经常会遇到:清空APP缓存数据,然后进行一系列请求。如,清空APP缓存数据,可使用adb shell pm clear com.example.packagename 命令。注:该命令清除掉APP的缓存,还能把APP的数据给清空。
查看所有App的名称:
使用如下命令:
adb shell pm list packages
注意:该命令可以查看手机上的APP名称。可以在后面加上 -f ,这样还能显示该APP的路径。
即:
adb shell pm list packages -f
adb shell input text "insert%stext%shere"
注意:%s表示空格。
adb shell input tap 500 1450
表示在屏幕上(500,1450)的坐标点上进行一次点击。
adb shell input swipe 100 500 100 1450 100
表示从屏幕坐标(100,500)开始,滑动到(100,1450)结束,整个过程耗时100ms.
adb shell input swipe 100 500 100 500 500
adb shell input keyevent 25
该命令表示调低音量。数字25是在AOSP源码中的KeyEvent类里卖弄定义的一个事件常量。该类定义了将近300个事件常量。
adb shell am start com.example.crime/com.example.crime.MainActivity
class SecondActivity : AppCompatActivity() { companion object { private val ARGUS_NAME = "argus_name" fun launch(activity: Activity, content: String): Intent { val intent = Intent(activity, SecondActivity::class.java) intent.putExtra(ARGUS_NAME, content) return intent } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_second) val name = intent.getStringExtra(ARGUS_NAME) nameTv.text = "Hello, $name" } }
即启动SecondActivity的话需要传入一个agrus_name参数,那么在命令行中可以执行:
adb shell am start com.example.crime/com.example.crime.SecondActivity -e argus_name QiuShui
adb shell am start -a "android.intent.action.VIEW" -d "https://www.google.com"
上面这个命令会启动浏览器打开谷歌网址页面。
adb shell am broadcast -a "our.specified.action"
还可以在上述命令后面添加**-e**来添加额外的信息。
adb shell am broadcast -a android.intent.action.BOOT_COMPILETED
adb shell am startservice "com.example.crime/com.example.crime.MyService"
服务 | 类名 | 功能 |
---|---|---|
activity | ActivityManagerService | AMS相关信息 |
package | PackageManagerService | PMS相关信息 |
window | WindowManagerService | WMS相关信息 |
input | InputManagerService | IMS相关信息 |
power | PowerManagerService | PMS相关信息 |
procstats | ProcessStatsService | 进程统计 |
battery | BatteryService | 电池信息 |
alarm | AlarmManagerService | 闹钟信息 |
meminfo | MemBinder | 内存 |
例如,要查看电池信息,命令行输入adb shell dumpsys battery,可以看到如下图:
dumpsys activity intents
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity permissions
dumpsys activity services
dumpsys activity recents
dumpsys activity activities
dumpsys activity processes
我们可以选择这几个中的一个命令进行查询。例如查看界面相关的,使用adb shell dumpsys activity activities命令。
上述几种信息类型可以用缩写来表示,即adb shell dumpsys activity a等价于adb shell dumpsys activity activities命令等。注意:providers的缩写是prov、permissions的缩写是perm。
adb shell dumpsys activity | grep -i 'run'
我这里会得到这样的输出:
* ContentProviderRecord{978680e u0 qiushui.me.test/com.android.tools.fd.runtime.InstantRunContentProvider}
authority=qiushui.me.test.com.android.tools.fd.runtime.InstantRunContentProvider
Running activities (most recent first):
Run #1: ActivityRecord{304ded1 u0 qiushui.me.test/.SecondActivity t14}
Run #0: ActivityRecord{19b9e16 u0 qiushui.me.test/.MainActivity t14}
Running activities (most recent first):
Run #0: ActivityRecord{f9bafb7 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t13}
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
User #0: state=RUNNING_UNLOCKED
信息中:屏幕正在显示的界面是SecondActivity,然后是MainActivity.NexusLauncherActivity是处于最底层,就是Launcher.
adb shell screencap /sdcard/screen.png
adb shell screenrecord /sdcard/demo.mp4
注:此命令适用于Android 4.4及以上的设备中。
录制视频也有参数选项,比如 --size 设置视频大小, --time-limit设置最大录制时长等。
ADB用法大全:
点开链接访问具体内容:http://www.wanandroid.com/blog/show/2310
博主认为,最可靠的信息来源还是android官方网站,数据可靠最新,如果你感兴趣想了解Android官网中的ADB信息,请访问链接:https://developer.android.com/studio/command-line/adb.html
官方网站提供的文档才是最全最可靠的信息来源!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。