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

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

  1. 将上一步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项目构建相关命令
./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 查看依赖库会生成大量内容,并且无法看到全部信息,为了方便查看,将输出信息写入文本文件中

证书签名相关命令
生成证书:keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore giMobile.jks
查询证书:keytool -list -v -keystore <keystore-file>
上面的查询现在好像获取不到 MD5 值,现在得使用命令行 keystore 证书通过命令行拆分成 pem 证书,并获得 MD5,具体如下:
keytool -importkeystore -srckeystore giMobile.jks -destkeystore test.p12 -deststoretype PKCS12
openssl pkcs12 -in test.p12 -nokeys -out certificate.pem
openssl x509 -noout -fingerprint -md5 -inform pem -in certificate.pem
最后输出:MD5 Fingerprint=xx:xx...
注:微信的应用签名是将md5的冒号都删掉, 再转成小写

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 无线和网络设置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 1. adb devices显示系统中全部设备 2. adb get-state 获取设备的状态(device:设...
    穿越地平线_2018阅读 625评论 0 0
  • 不同操作系统关键字: 版权声明:本文为CSDN博主「热爱学习的吉吉」的原创文章,原文链接:https://blog...
    呵呵豆阅读 2,573评论 0 0
  • adb logcat 命令格式 : adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括...
    skyyhu阅读 656评论 0 1
  • 获取编译时间cat /proc/version 内核崩溃cat /proc/last_kmsg 获取硬件信息adb...
    慢牛策略阅读 9,064评论 0 14
  • Tcp/IP通信也是不安全的,在传输的时候也可能出现漏洞 查看正在运行的进程 adb shell ps -A |g...
    远远飘着云阅读 4,377评论 0 0