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 top
(adb 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
- 将上一步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 无线和网络设置