记录Android开发中,我常用到的adb指令。
备注:grep默认是Linux系统指令,在Windows系统下,可以使用findstr替代。
SplashActivity的目录结构:com.exp.ble.activity
项目包名:com.exp.ble
在命令行中输入:
adb shell am start -W com.exp.ble/.activity.SplashActivity
F:\CompanyProject\AppBle>adb shell am start -W com.exp.ble/.activity.SplashActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.exp.ble/.activity.SplashActivity }
Status: ok
Activity: com.exp.ble/.activity.SplashActivity
ThisTime: 667
TotalTime: 667
WaitTime: 692
Complete
Android应用启动时间参数详解:ThisTime、TotalTime与WaitTime
1. ThisTime
定义:表示 最后一个启动的Activity的初始化耗时。例如,若应用启动流程中存在多个Activity(如先启动透明Activity再跳转主界面),ThisTime仅记录最终展示给用户的Activity(主界面)的启动时间。
典型场景:
冷启动时只有一个Activity(如Splash页):ThisTime与TotalTime相等。
热启动或存在多Activity跳转链时:ThisTime仅统计最后一个Activity的耗时。
优化方向:减少主界面onCreate()、onResume()中的耗时操作(如布局渲染、数据加载)
2. TotalTime
定义:表示 应用自身从进程创建到首屏完全渲染的总耗时,包括以下阶段:
进程创建:系统分配内存并初始化进程。
Application初始化:执行Application.onCreate()中的代码(如SDK初始化)。
Activity生命周期:首个Activity的onCreate()到onWindowFocusChanged()完成。
3. WaitTime
定义:表示 系统处理启动请求的总耗时,涵盖以下部分:
前一应用(如桌面)的onPause()耗时。
系统调度资源(如AMS)的时间。
应用自身的TotalTime。
原因是该串口设备没有权限,通过adb shell 使用root权限给该设备添加可读可写权限后,打开串口成功,我输入的命令如下:
1. adb shell
2. su
3. chmod 666 /dev/ttyS1
4. setenforce 0
1、adb connect ip //首先连上Android设备;
2、adb shell //进入指令;
3、cd /data/data/{package name}/databases; //进入数据库;
4、sqlite3 {database name} //打开某个数据库,既可以使用sql语句对该数据库内的表进行相关操作。
数据库名称:acd.db;
包名:com.exp.app
1、导出sqlite3到Android设备sd卡:
adb shell "run-as com.exp.app cat /data/data/com.exp.app/databases/lcd.db > /sdcard/acd.db"
2、将sd卡上的数据库导出到电脑,默认路径为cmd当前路径:
adb pull /sdcard/acd.db
adb tcpip 5555
adb connect 172.16.7.204:5555
以root方式执行shell命令:
Read-only file system
时以可读写方式执行:
如果结果太长可以保存到文件中,如:
>
新建或覆盖文件保存:adb shell pm list packages > installed_package.txt
>>
往文件中追加结果: adb shell pm list packages >> installed_package.txt
adb kill-server
adb start-server
adb devices
adb shell ifconfig wlan0
adb shell netcfg
adb push /Users/ch/apk/BBox.apk /sdcard/BBox.apk
adb pull /sdcard/xbd/BBox.apk /Users/ch/apk/BBox.apk
adb shell dumpsys iphonesubinfo
adb shell getprop ro.product.brand
adb shell getprop ro.product.model
adb shell getprop ro.build.version.sdk
adb shell getprop ro.build.version.release
adb shell wm size
adb shell wm size 1080*1920
adb shell wm density
adb shell wm density 480
adb shell getprop ro.product.cpu.abilist(Android5.0系统之后)
adb shell getprop ro.product.cpu.abi(Android5.0系统之前)
adb shell settings get system screen_off_timeout
adb shell settings get secure sms_default_application
adb shell settings put secure sms_default_application com.carlos.sms
adb shell "dumpsys window policy | grep mScreenOnFully"
adb shell dumpsys power | findstr "Display Power:state="
adb shell am start
-W: wait for launch to complete
-S: force stop the target app before starting the activity
例adb shell am start -W com.UCMobile/com.uc.browser.InnerUCMobile
在AS中可过滤displayed
输出的启动日志
adb shell dumpsys cpuinfo com.exp.box
adb shell dumpsys meminfo -a com.exp.box
adb shell dumpsys meminfo -d com.exp.box
adb shell "ps | grep com.aspire.agent"
得到结果第二列的值为pid
adb shell cat /proc/6094/status
adb shell "cat /proc/uid_stat/10189/tcp_snd"
adb shell "cat /proc/uid_stat/11110/tcp_rcv"
adb shell dumpsys dropbox --print >>crashlog_$(date +%Y%m%d%H%M).txt
adb shell cat /proc/meminfo
adb shell pm list packages [-com.carlos.bbox]
adb shell pm clear com.carlos.bbox
adb uninstall com.carlos.bbox
adb shell pm uninstall -k --user 0 com.carlos.test
adb install (-r强制安装) /Users/ch/apk/Box.apk
adb shell pm install (-r) /sdcard/Box.apk
adb install-multiple -r /Users/ch/apk/Box.apk
adb shell am broadcast -a com.cs.box -e port 8888
adb shell am startservice com.cs.box/com.cs.box.MyService
adb shell am start -n com.cs.box/.MainActivity
adb shell am froce-stop com.cs.bbox
adb shell dumpsys activity | grep "mFocusedActivity"
adb shell dumpsys activity | grep "mResumedActivity"
adb shell dumpsys window | grep mCurrentFocus
adb shell dumpsys activity top
adb sehll pm list packages | grep "com.carlos.test"
adb shell pm path com.carlos.grabredenvelope
adb pull /data/app/com.example.carlos.myapplication–y9EFnP-__j34XhQxIwXvA==/base.apk(找到的apk路径)
adb shell dumpsys activity top > info.txt
adb shell monkey -p com.codemao.dan -v 1000
adb shell monkey -p com.codemao.dan --throttle 1000 20
adb shell input tap 250 250
adb shell input text hello world
adb shell screencap -p /sdcard/a.png
adb shell screenrecord /sdcard/test.mp4
adb logcat -v time > log.txt
adb logcat -c
Charles抓包,针对Lancher未提供设置网络代理和打开浏览器功能,使用adb来打开原生设置网络代理安装证书
adb shell am start com.android.settings/com.android.settings.Settings
adb shell input text 172.17.5.166
adb shell am start com.android.browser/com.android.browser.BrowserActivity
chls.pro/ssl
安装证书adb shell input text chls.pro/ssl
找到了更加快捷的做法,直接adb设置代理,如:
adb shell settings put global http_proxy 127.0.0.1:8888
Charles清除代理三种方式
模拟按键上下
adb shell input keyevent KEYCODE_DPAD_UP
adb shell input keyevent KEYCODE_DPAD_DOWN
adb shell setprop debug.layout true
adb shell setprop debug.layout false
adb shell service call window 3
返回值是:Result: Parcel(00000000 00000000 ‘…’)" 说明View Server处于关闭状态
返回值是:Result: Parcel(00000000 00000001 ‘…’)" 说明View Server处于开启状态
adb shell service call window 1 i32 4939
adb shell service call window 2 i32 4939
*#06#
首先进入操作系统的拨号界面,输入指令码即可快速进入Android的工程测试模式。
常见机型进入工程模式的指令码是:
adb jdwp
在某些手机上进入到package文件夹下执行ls命令会出现以下问题,参考链接:opendir failed, Permission denied
opendir failed, Permission denied
此时,可先run-as your-package命令,如
run-as com.carlos.test
remote open failed: Permission denied
可用adb bugreport命令在当前路径下生成压缩包分析,参考链接:调试系列2:bugreport实战篇
1.win+r cmd进入命令行
2.cd 进入[sdk]/platform-tools目录下
3.执行下面命令行,复制xxx.db到F:/dest
adb pull /data/data/[package name]/xxx.db F:\dest
4.是的,这一步正常来说就要报错了"failed to copy xxx.db to F:\dest\dest.db : Permission denied"
原因是权限不够
5.只能用shell命令进行系统里给xxx.db增加读权限了,执行下面命令
adb shell
su
cd data/data/[package name]/databases
chmod 664 xxx.db
ctrl+c
6.再次执行步骤3即可
不需要adb shell进入,直接使用下面的命令
adb pull /data/data/com.kdthe.app_multimediaalarm/databases F:\Sqlite
1、获取手机系统信息( CPU,厂商名称等)
adb shell "cat /system/build.prop | grep “product”"1
2、获取手机系统版本
adb shell getprop ro.build.version.release1
3、获取手机系统api版本
adb shell getprop ro.build.version.sdk1
4、获取手机设备型号
adb -d shell getprop ro.product.model1
5、获取手机厂商名称
adb -d shell getprop ro.product.brand1
6、获取手机的序列号
有两种方式
1、 adb get-serialno1
2、 adb shell getprop ro.serialno1
7、获取手机的IMEI
有三种方式,由于手机和系统的限制,不一定获取到
1、 adb shell dumpsys iphonesubinfo1
其中Device ID即为IMEI号
2、 adb shell getprop gsm.baseband.imei1
3、 service call iphonesubinfo 1 1
此种方式,需要自己处理获取的信息得到
8、获取手机mac地址
adb shell cat /sys/class/net/wlan0/address12
9、获取手机内存信息
adb shell cat /proc/meminfo1
10、获取手机存储信息
adb shell df1
获取手机内部存储信息:
魅族手机: adb shell df /mnt/shell/emulated1
其他: adb shell df /data1
获取sdcard存储信息:
adb shell df /storage/sdcard1
11、获取手机分辨率
adb shell "dumpsys window | grep mUnrestrictedScreen"1
12、获取手机物理密度
adb shell wm density