[持续更新] Adb常用命令收录

328 阅读7分钟

adb devices 查看连接设备 adb reboot 重启 adb reboot recovery 重启到 rec adb reboot bootloader 重启到 bootloader adb install xxxx.apk 安装 apk adb uninstall xxx.apkpkgname 卸载 apk 可以使用 [-k] 参数,即 adb uninstall -k xxx.apkpkgname ,这里的 xxxx.apkpkgname 需要使用包名,可以利用 pm 命令列出 adb shell pm list packages (这个除了极特殊用途外,用处不大) adb shell getprop 获取系统设置 adb sideload xxx.zip adb 刷机 adb push xxxx /sdcard/ 推送电脑文件到手机,其中的 xxxx 是电脑上的文件路径,yyyy 是手机上的文件路径,比如我要推送 “C 盘 adb 目录下的 adb.exe” 到手机的 “/data/media/0” 目录下,我就需要命令 adb push C:\adb\adb.exe /data/media/0; adb pull yyyy xxxx 获取手机文件到电脑,其中 yyyy 是手机路径及文件,xxxx 是电脑路径,比如我要获取 “手机上的 /system/framework” 文件夹到 “电脑 D 盘下的 framework 文件夹”,我就需要 adb pull /system/framework D:\framework

Android部分手机崩溃了后会自动重启应用,导致logcat的崩溃日志被刷掉,很是苦恼,拔线都来不及,这个时候可以用adb logcat >> log.txt命令在要崩溃的时候赶紧执行记录日志到文件,崩溃后及时停止记录,然后进去搜索FATAL EXCEPTION就可以愉快看报错了

可以查看很多apk的manifest里面的基本信息,比如支持分辨率,版本号等, /Users/xxxxx/Library/Android/sdk/build-tools/xxxx/aapt dump badging xxxxxxx.apk

查看app是32位还是64位的,简单的方法是:首先在安卓系统中会存在zygote和zygote64(父进程),分别对应32位和64位应用,然后在手机中打开测试的app后,然后在dos下,手机连接电脑,连接成功以后,在输入adb shell ps | grep zygote,会有zygote和zygote64两个进程 ,然后再输入 adb shell ps |grep 上面查到的zygote64的PID,然后看下列出的包名有没有你测试的apk包名,有的话就是64位。另外你还要运行 adb shell ps | grep 上面查到的zygote的PID,看下看下列出的包名有没有你测试的apk包名,如果有,说明你测试的app兼容64位和32位。原理就是通过父进程zygote和zygote64,看下他们的子进程来看下没有测试的app包名;(当然还有其他方法修改apk后缀名为zip解压,查看lib中有没有包含对应的库,具体自行百度下~)

设置手机上app进入调试模式 adb shell am set-debug-app -w com.xxx.app.xxx adb shell am set-debug-app -w com.xxx.apps.android.xxx adb shell am set-debug-app -w --persistent com.xxx.app.xxx

adb shell am clear-debug-app 清除app调试模式 adb shell /system/bin/logcat -b main 查看logcat adb shell dumpsys window displays (简单方式:adb shell wm size) 获取屏幕分辨率 adb shell wm density 获取屏幕dpi adb shell am display-size 1280x800 重写模拟器/设备显示大小 adb shell am display-density 480 重写模拟器/设备显示密度 adb shell am start -n com.xxx.apps.xxx.overseas/ui.StartPageActivity -d paramStr //启动某个app的某个activity(可能需要配置android:exported="true",获取参数:getIntent().getDataString()) adb shell dumpsys activity activities 查看全部任务栈 adb shell dumpsys activity activities | grep ResumedActivity 查看当前activity adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' 限制仅输出Running Activities列表 adb shell am start com.android.settings //设置主页面

adb shell ps | grep com.survival.last //查看线程pid adb shell top -H -p pid //查看线程优先级,pid用上个命令获取,返回的PR就是线程的优先级 adb shell "am force-stop com.survival.last" 强制结束App adb logcat -v time | grep ActivityManager 查看activity跳转日志 adb shell input keyboard text "abc" //模拟键盘输入 adb shell input keyevent 3(home键) 4(back键) 187(最近任务) 19 (up键) 24 (volume+键) 25 (volume-键) adb shell input tap 500 500 // 模拟点击屏幕指定位置,不过在android中tap好像失效了不知道为什么 adb shell input swipe 500 800 500 300 // 模拟滑动,从(500,800)滑动到(500,300) adb shell cat /proc/cpuinfo 能够看明白手机指令集,是32位还是64位 adb shell getprop ro.product.cpu.abi 查看手机CPU的ABIs adb shell topadb shell top -H) 查看CPU/内存等占用率的命令 adb shell ps -A Android系统高版本查看进程信息 adb shell ps -A -T | grep pid (adb shell ps -T -p pid) Android系统高版本查看进程的线程信息

adb shell dumpsys meminfo <package_name> 重点关注如下几个字段:Native/Dalvik 的 Heap 信息,具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。Total 的 PSS 信息 这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。

申请最大内存使用 adb shell getprop dalvik.vm.heapgrowthlimit adb shell getprop dalvik.vm.heapsize adb shell getprop dalvik.vm.heapstartsize 说明:heapsize参数表示单个进程可用的最大内存,但如果存在heapgrowthlimit参数,则以heapgrowthlimit为准. heapsize表示不受控情况下的极限堆,表示单个虚拟机或单个进程可用的最大内存。而android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机(这样设计就会在单个程序崩溃的情况下不会导致整个系统的崩溃)。 注意:在设置了heapgrowthlimit的情况下,单个进程可用最大内存为heapgrowthlimit值。在android开发中,如果要使用大堆,需要在manifest中指定android:largeHeap为true,这样dvm heap最大可达heapsize

设置logcat缓存大小 adb logcat -G 100M adb logcat -g

将手机上已安装的apk拉下来 1 .定位apk所在系统路径 :adb shell pm path com.google.android.youtube 2. 将上一步apk查看到的路径从手机把apk pull下来: adb pull /system/app/YouTube/YouTube.apk

adb wifi 调试方法(手机和电脑连接的是同一个 wifi) 手机USB 连接电脑: adb tcpip 5555 查看手机 ip 地址: adb shell ifconfig wlan0 adb wifi 连接手机: adb connect 192.168.0.142:5555 断开adb: adb disconnect 192.168.0.142 缺点:手机断电重启后,就要再用USB线,开启手机ADB

如果执行命令时遇到:more than one device/emulator 的错误 那么就需要通过: adb devices 列出所有设备列表 然后通过:给命令加上-s的参数:adb -s 192.168.137.95:5555 logcat 就可以了

AndroidStduio项目构建相关命令 keytool -list -v -keystore <keystore-file> ./gradlew processDebugManifest --stacktrace 可以专门处理manifest合并冲突的问题 ./gradlew assembleDebug --stacktrace --info ./gradlew assembleRelease --stacktrace --info ./gradlew assembleDebug --profile //生成一份本地的耗时分析报告 ./gradlew assembleDebug --scan ./gradlew clean 上面是对主项目执行默认的构建,需要指定module构建,命令格式类似:./gradlew :moduleName:assembleRelease --stacktrace --info ./gradlew :app:dependencies --info 查看包的依赖关系(相同的库存在多个版本时, gradle 会自动使用最高版本的库 , 上图中 后面带有 (*) 的库就表示 这个库 有被覆盖过) ./gradlew :app:dependencies > log.txt 查看依赖库会生成大量内容,并且无法看到全部信息,为了方便查看,将输出信息写入文本文件中

adb命令打开系统设置界面打开系统设置主界面 adb shell am start com.android.settings/com.android.settings.Settings 安全 adb shell am start com.android.settings/com.android.settings.SecuritySettings 手机无线信息 adb shell am start com.android.settings/com.android.settings.RadioInfo 其他界面完整类名(命令同上) com.android.settings.AccessibilitySettings 辅助功能设置 com.android.settings.ActivityPicker 选择活动 com.android.settings.ApnSettings APN设置 com.android.settings.ApplicationSettings 应用程序设置 com.android.settings.BandMode 设置GSM/UMTS波段 com.android.settings.BatteryInfo 电池信息 com.android.settings.DateTimeSettings 日期和坝上旅游网时间设置 com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置 com.android.settings.DevelopmentSettings 开发者设置 com.android.settings.DeviceAdminSettings 设备管理器 com.android.settings.DeviceInfoSettings 关于手机 com.android.settings.Display 显示——设置显示字体大小及预览 com.android.settings.DisplaySettings 显示设置 com.android.settings.DockSettings 底座设置 com.android.settings.IccLockSettings SIM卡锁定设置 com.android.settings.InstalledAppDetails 语言和键盘设置 com.android.settings.LanguageSettings 语言和键盘设置 com.android.settings.LocalePicker 选择手机语言 com.android.settings.LocalePickerInSetupWizard 选择手机语言 com.android.settings.ManageApplications 已下载(安装)软件列表 com.android.settings.MasterClear 恢复出厂设置 com.android.settings.MediaFormat 格式化手机闪存 com.android.settings.PhysicalKeyboardSettings 设置键盘 com.android.settings.PrivacySettings 隐私设置 com.android.settings.ProxySelector 代理设置 com.android.settings.RadioInfo 手机信息 com.android.settings.RunningServices 正在运行的程序(服务) com.android.settings.SecuritySettings 位置和安全设置 com.android.settings.Settings 系统设置 com.android.settings.SettingsSafetyLegalActivity 安全信息 com.android.settings.SoundSettings 声音设置 com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息 com.android.settings.TetherSettings 绑定与便携式热点 com.android.settings.TextToSpeechSettings 文字转语音设置 com.android.settings.UsageStats 使用情况统计 com.android.settings.UserDictionarySettings 用户词典 com.android.settings.VoiceInputOutputSettings 语音输入与输出设置 com.android.settings.WirelessSettings 无线和网络设置