Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解

一、前期基础知识储备

Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第1张图片
(1)adb命令行的定义与作用
adb的全称为Android Debug Bridge,中文名“调试桥”,顾名思义adb命令是调试手机中应用的一种方法,而且作为Android SDK中的工具,其功能非常强大,用这个命令行工具可以直接操作管理调试中的Android模拟器或者真机调试中的设备,它的主要功能列举如下:

  • 运行设备的shell(多种命令行),进行各种操作;
  • 管理模拟器或移动设备的端口映射;
  • 计算机和设备之间的文件传入/传出;
  • 将本地apk软件安装在模拟器或移动设备中……

(2)adb命令行的运行位置
Windows下使用Android Studio开发的同学可以在两个位置运行adb命令:
1)Android Studio自带的Terminal窗口;(注意自配环境变量,否则无效)
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第2张图片
配置adb运行环境变量的方法:《如何配置android的adb环境变量》-简单 易懂
2)Windows下使用cmd黑窗口;(注意自配环境变量,否则无效)
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第3张图片
(使用cmd窗口时,配置环境变量的方法同上)

二、上代码,进行具体的adb命令操作

(1)执行adb devices 命令,我们可以看到当前电脑正在连接调试的手机;
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第4张图片
(2)执行adb shell命令查看设备里面的文件目录和文件;
注意:adb shell,这个命令用于登录设备的shell,后面加直接运行设备命令,相当于执行远程命令,如“ls”列出目录下的文件和文件夹。
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第5张图片
(3)执行进入目录操作,进入mnt目录下的sdcard目录;
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第6张图片
该sdcard目录下就是我们手机上重要的sdcard目录,里面有各种重要的存储文件;
(4)执行exit命令 回车 退出文件夹目录;
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第7张图片
(5)执行push命令,将电脑端文件复制到手机中指定文件夹中去;

这里写图片描述
这里写图片描述
注意:复制的文件源需放置在C:\Users\Administrator目录下,命令行可直接读取;
(6)执行pull命令,将手机移动端文件复制到电脑C:\Users\Administrator目录下;

这里写图片描述
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第8张图片
(6)adb version,查看adb版本;
注:接下来的用Android Studio Terminal窗口演示adb命令行的使用。
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第9张图片
(7)adb shell dumpsys package ,查看app相关所有信息,包括action,codepath,version,需要的权限等等信息;
(8)列出移动设备中所有的应用;
adb shell pm list package — 列出所有的应用;
adb shell pm list package –s — 列出系统应用;
adb shell pm list package -3 — 列出所有第三方应用;
adb shell pm list package –f — 列出应用包名及对应的apk名及存放位置;
adb shell pm list package –I — 列出应用包名及其安装来源;
adb shell pm list package -f -3 -i douyu 参数组合使用,如查找斗鱼的包名;
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第10张图片
(8)adb shell wm size,获取屏幕的分辨率;
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第11张图片
(9)adb shell am start -n com.android.camera/.Camera启动手机自带相机;
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第12张图片

三、Android开发中常用的adb操作 - 大大提升开发便捷性

上面列出的是adb命令是适用性的基础操作,下面推荐一些Android开发中便捷的adb命令。
(1)安装apk
apk放在电脑桌面上,输入adb install C:\Users\Administrator\Desktop\clip.apk
覆盖当前版本安装,输入adb install -r C:\Users\Administrator\Desktop\clip.apk
过滤安装某个ABI的apk:将apk放在SDK目录下的platform-tools的目录下,与adb.exe一个目录
输入:adb install --abi arm64-v8a pencil.apk,比如安装64位的apk。
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第13张图片
另外,需要注意的一点,如果使用了360桌面整理这一类的整理软件,那么desktop的位置会发生变化,如博主的变为:adb install -r F:\360MoveData\Users\Administrator\Desktop\1.6.apk
补充几个当项目编译失败时,可以执行的命令行,用以确认错误的源头:
gradlew build --stacktrace
gradlew compileDebug --stacktrace
gradlew compileDebugJavaWithJavac
gradlew processDebugResources --debug
(2)获取当前Activity名和包名
adb shell dumpsys activity |find “mFocusedActivity” (注意这里用英文引号)
(3)获取连续10次冷启动耗时 (用于测试应用冷启动时间)
adb shell am start -S -R 10 -W calculator.calculate.calcu/.calc.BasicCalculatorActivity
(4)卸载apk
直接卸载,adb uninstall com.clip.apk
保留数据,adb uninstall -k com.clip.apk
(5)启动一个Activity
直接启动,adb shell am start 包名 / 完整 Activity 路径
携带Intent参数启动,adb shell am start com.clip.apk/com.clip.apk.MainActivity -e name clip
启动隐式Intent,adb shell am start -a “android.intent.action.VIEW” -d “https://www.google.com”
(6)发送广播
直接发送,adb shell am broadcast -a “broadcastactionfilter”
携带Intent参数发送,db shell am broadcast -a “broadcastactionfilter” -e name clip
(7)启动服务
直接启动,adb shell am start 包名 / 完整 Service 路径
adb shell am startservice “com.clip.apk/com.clip.apk.ClipService”
(8)屏幕截图 - 一些较老的机型没有截屏快捷方式时特别好用
adb shell screencap /sdcard/screen.png 后面路径是存储截图路径(路径名+图片名)
(9)录制屏幕
使用 screenrecord [options] filename 命令来录制屏幕视频,如:
adb shell screenrecord /sdcard/clip.mp4 后面路径是存储录屏路径(路径名+文件名)
(10)查看应用签名信息 - 版本更新失败时,用于检查两次版本的签名信息是否相同。
apk放在桌面上,重命名.zip,解压缩得到其中META-INF文件夹中的CERT.RSA文件(放在桌面上);
adb命令行输入 keytool -printcert -file C:\Users\Administrator\Desktop\CERT.RSA
信息如下图: 可以看到应用的签名信息
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第14张图片
(11)清除应用数据与缓存 - 一些测试手机不太熟悉操作时特别好用
adb shell pm clear 相当于手动点击清除数据和应用缓存
(12)查看正在运行的Service
adb shell dumpsys activity services []
参数不是必须的,指定 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。
(13)查看应用详细信息 - 重点使用
adb shell dumpsys package
输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
(14)查看设备信息
型号 adb shell getprop ro.product.model
电池状况 adb shell dumpsys battery
屏幕分辨率 adb shell wm size
屏幕密度 adb shell wm density
android_id adb shell settings get secure android_id
Android 系统版本 adb shell getprop ro.build.version.release
IP 地址 adb shell ifconfig | grep Mask 或者 adb shell netcfg
内存信息 adb shell cat /proc/meminfo
CPU 信息 adb shell cat /proc/cpuinfo processor 的编号是 0 到 3,有几个就是几核
修改屏幕分辨率 adb shell wm size 480x1024 恢复 adb shell wm size reset 或者重启设备
(15)检测应用是否有context引起的内存泄露
在Terminal窗口输入命令 adb shell dumpsys meminfo 查看内存使用情况
重复,切换Activity,查看最终有几个Activity:
​​Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第15张图片
如图,最后回到一个页面,但是有2个,甚至多个Activity的,则肯定有Activity被长期持有了。
(16)Manifest merger failed with multiple errors, see logs问题处理
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第16张图片
此时在Terminal窗口输入命令 gradlew processDebugManifest --stacktrace,其中,processDebugManifest是log里面提到的,这个命令是会了获取更多的log信息。比如:
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第17张图片
可以看到Build失败是由于没有足够空间分配给JVM。
(17)compileDebugJavaWithJavac问题处理
Execution failed for task ‘:app:compileDebugJavaWithJavac’
导致此问题的原因有很多种,每种问题的解决方法也各不相同,最主要的地方还是要可以定位出问题的地方在哪里。这里可以借助adb命令行实现:
在Terminal窗口输入命令 gradlew compileDebugJavaWithJavac,得到的结果如图:
在这里插入图片描述
可以定位到,是由于对应库中的一个Activity导包失败导致的此问题。
(18)executing external native build for cmake问题处理
此为使用cmake编译C++代码时出现的问题,甚至直接利用AS构建含C++原生代码的项目时都会出现这个问题,此时可以输入gradlew build --stacktrace,用以追踪出错的地方。博主是定位到项目根目录下的gradle版本(3.1.2)不兼容,然后升级为3.2.1,即可编译通过。
(19)Android Studio - 编译debug捅过了, release却无法打包问题处理
做完一个新功能之后,有时会碰见debug编译通过,但打release包出错的问题,此时可以检查是否是混淆出错了,例如引入了一个新的依赖库,但是没有添加对应的依赖。如果确定不是混淆出错,此时可以输入:gradlew lint ,此命名行会花费大概几分钟的时间去检查代码,直至定位到出错的地方,可以在build下找到出错的文件,如:
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第18张图片
可以直接定位到出错的代码,包括XML,定位到具体的行。
慢慢更新中…
Android Studio下Terminal窗口&Window下cmd黑窗口中使用adb命令调试精炼详解_第19张图片
推荐一波其他好文:
参考脚本之家文章《android adb实用命令小结》
参考博客园文章《Android 常用 adb 命令总结》

你可能感兴趣的:(基础知识,adb,Terminal,cmd,调试)