安卓系统开发的一些ADB命令

adb shell getprop ro.build.type 查看当前模式是否debug版本
adb disable-verity (一般remount之前调用) 这个指令会修改vbmeta.img这个镜像的部分内容

 新建udev规则文件 

参考网站:  在Ubuntu下进行安卓开发遇到“insufficient permissions for device: user in plugdev group; ”问题的解决办法_女儿控老徐的专栏-CSDN博客   

sudo touch /etc/udev/rules.d/51-android.rules
如果已经有过该文件,只是新增一台设备权限,先输入命令:lsusb
进入该文件:sudo vim 51-android.rules
编辑该文件,添加设备的id与mode,如:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="4ee7", GROUP="plugdev"
切记要通过sudo vim 进入xx文件
按"i"进入编辑模式,编辑完成后按ESC键 跳到命令模式,然后:wq保存

其他一些命令

# 修改权限,并重启服务
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
sudo service udev restart
# 重启adb服务
sudo adb kill-server
sudo adb start-server

window 创建目录:mkdir 文件夹名
拷贝文件:adb pull    文件    /mnt/sdcard/DCIM/
adb pull <手机路径>   <本机路径>  从手机中拉取信息到本地电脑上
adb push <本机路径>  <手机路径>  从本地电脑推送信息到手机上


cd system/priv-app/  包括Launcher,systemui, settingsprovider等,均是系统的核心应用
ls -la   
cd system_ext/priv-app/
1、获得root权限:adb root
2、设置/system为可读写:adb remount
3、将PC机上文件复制到手机:adb push 文件名  /system/lib

adb devices   查询电脑已连接的设备
adb shell pm list packages   列出目标设备中已安装的应用程序包

adb shell pm list packages -3                   #获取包名
adb shell pm list packages -s                   #只输出系统的包
adb shell pm list packages -u                   #查看已经卸载的包(uninstall)
adb shell pm list packages -i                    #只输出包和安装信息(来源) (infomation)
adb shell pm list packages -f                    #输出包和包相关联的文件 (file) 列出目标设备中已安装的应用程序包的具体位置 
adb shell pm path <包名>                         #查看、打印包的路径
adb shell ps |findstr 关键字                       #查看进程
adb shell am start 页面文件名                   #启动app(activity)
adb shell am force-stop 包名                     #关闭app(activity)
adb shell top                                              #实时显示进程情况
adb shell tom -p                                         #查看占用内存前num的app显示进程的最大数量
adb shell top -num                                     #刷新num次进程后退出
adb uninstall xxx 卸载或删除的应用包xxx
adb pull /data/app/com.tencent.tbs-1/base.apk         将手机已安装程序的apk下载到你所在的文件夹

adb shell screencap设备存放路径             #截屏
adb shell kill                                               #结束进程
adb shell kill -9                                           #强制结束进程
adb shell df                                                #查看分区的使用情况
adb shell du                                               #查看文件或目录大小
adb shell netstat                                        #显示网络信息,默认包含参数tuwx
adb shell netcfg                                         #网络设备名字:查看网卡信息
adb shell ifconfig eth1                               #可设置网络设备的状态,或是显示目前的设置
adb shell ping                                           #向目标主机发送数据包,看是否能否接到响应、                                                                        ping-c:数据包的数量,默认一直发包
adb shell ping -c                                        # -c: 指定数据包的次数,不加-c默认一直发包
adb shell ping -i 2                                      #间隔时间,默认1秒钟发一个数据包
Adb shell wm size                                      #获取屏幕分辨率
adb shell screenrecord                              #抓取手机屏幕的录像
Adb shell am start -W                                #大写W, 该命令用于统计App冷起和热启动的时间
adb shell monkey -p ……                          #monkey命令
adb shell getprop                                       #获得android系统属性

/* 安装卸载apk */
adb install xx.apk (一定要切换到含有apk的文件夹)
也可以:pm install -r /system/app/SDKLongRrs.apk 
adb uninstall apk的包名(如:com.lcb.one)    


+++++++++++++++++++++++++++++++++  shell  +++++++++++++++++++++++++++++++++
adb shell 进入shell状态
如果有多个设备怎么办? 
adb devices查看你的设备; 
adb -s xiaomi shell:-s命令表示选择设备,这里是选择xiaomi设备进shell
exit  退出shell状态

以下两个只能在shell层才能设置 
pm list packages | grep xxx  通过关键字过滤显示安装包列表
pm list packages -f | grep xxx  通过关键字过滤显示安装包路径列表

获取md5值
md5 /system/app/SDKLongRrs.apk 
获取一个目录下所有文件的md5 
md5 /system/app/*

+++++++++++++++++++++++++ 启动应用   ++++++++++++++++++++++++++++++
(1)启动Activity 
am start -n com.googleplayapp.storerootsuaction/.MainActivity( 你得知道对应的界面的Activity路径以及包名)

完整代码:adb shell am start -n com.test.provider/.MainActivity
(2)启动service
    <service
        android:name=".MyService"
        android:description="@string/Desciption"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.nandhan.myservice" />
        </intent-filter>
    </service>  
    
  adb shell am startservice com.nandhan.myservice/.MyService

+++++++++++++++++++++++++ 查看正在运行的Services   +++++++++++++++++++++++++++
adb shell dumpsys activity services [<packagename>]
包名是必须的、不需要写完整的包名、支持模糊匹配
例如adb shell dumpsys activity services com.linux.example


+++++++++++++++++++++++++ 查看正在运行的 activity  ++++++++++++++++++++++++++
adb shell dumpsys activity [<packagename>]
包名是必须的、不需要写完整的包名、支持模糊匹配
例如adb shell dumpsys activity com.linux.example


+++++++++++++++++++++++++ clear 清除应用数据  ++++++++++++++++++++++++++++++
pm clear com.googleplayapp.storerootsuaction


/*通过shell命令设置gateWay*/
route add default gw 192.168.1.1 dev eth0

/*通过shell命令查看gateWay*/
ip route show
返回值:
default via 192.168.1.1 dev eth0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.109 


/*通过shell命令设置IP和netmask*/
ifconfig eth0 192.168.0.173 netmask 255.255.255.0    
                
        
/*通过shell命令查看IP和netmask*/
 ifconfig eth0
 返回值:
eth0: ip 192.168.1.109 mask 255.255.255.0 flags [up broadcast running multicast]

/*通过shell命令查看DNS*/
getprop net.eth0.dns1
返回:8.8.8.8
getprop net.eth0.dns2

返回:8.8.4.4

/*通过shell命令设置DNS*/
setprop net.eth0.dns1 8.8.8.8
setprop net.eth0.dns2 8.8.4.4

/*通过shell命令查看所有网络信息*/
netcfg
返回值:
tunl0    DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
gre0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
eth0     UP                                192.168.1.74/24  0x00001043 1c:ca:e3:40:58:b1
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
ip6tnl0  DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00

Adb Logcat -s XXX   只输出与XXX有关的信息
adb start-server    开启ADB  adb nodaemon server 查看端口是否被占
adb kill-server      关闭ADB   
adb logcat -v time -s XXX  显示指定字符和时间
adb logcat     //显示全部日志
adb logcat > c:\test.log //将日志保存到文件test.log
根据tag标记和级别过滤日志输出:
adb logcat *:W   //显示所有优先级大于等于“warning”的日志
adb logcat -c  清空日志缓存

adb logcat -b  log输出-附加缓冲区
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)

-b  指定要查看的日志缓冲区,可以是system,events ,radio,main . 默认值是system和main 。

如:logcat -b crash  查看crash日志

-c 清除屏幕上的日志.

-d 输出日志到屏幕上.

-f  指定输出日志信息的,默认是stdout .

-g 输出指定的日志缓冲区,输出后退出.

-n  设置日志的最大数目.,默认值是4,需要和 -r 选项一起使用。

-r  每时输出日志,默认值为16,需要和-f 选项一起使用.

-s 设置默认的过滤级别为silent.

-v  设置日志输入格式

Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择,如图
Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看的信息了。

adb logcat |grep Activtiy   打印过滤单个字符的日志
adb logcat |grep -E "A|B"   打印过滤多个字符的日志

命令查看设备是哪个阶段:adb shell getprop | grep boardid
查看当前运行的界面信息   adb shell dumpsys window |grep mCurrent 

查看通知栏消息:adb shell dumpsys notification
对内容做查找:adb shell dumpsys notification | findstr tickerText
adb logcat -b all |grep notification
1.adb root
2.adb remount
3.adb shell pm enable com.android.systemui/com.android.systemui.tuner.TunerActivity
4.adb shell am start -n com.android.systemui/com.android.systemui.tuner.TunerActivity
5.此时进入了System UI Tuner界面,点击status bar,滑动到页面底部,点击time,选择显示时分秒,此时状态栏上的时间会显示“秒”

adb shell am start

adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据

1.adb shell am start [options] <INTENT> 

官网介绍:https://developer.android.google.cn/tools/adb#am

启动一个activity   adb shell am start com.android.settings/com.android.settings.Settings(com.android.settings/.Settings)
或者adb shell am start -n com.android.settings/.Settings

启动一个action     adb shell am start -a com.e.uu.main1
 
带String参数的命令

adb shell am start -n com.e.uu/.MainActivity1 -e abc hello

代码中通过String value= getIntent().getStringExtra("abc")


2.adb shell am startservice [options] <INTENT>

作用:启动一个service

举例:adb shell am startservice -n com.e.uu/.CoreService -e key value


注:在实际调试的时候发现,调用start -n 启动activity时,必须有intent-filter;而startservice则不需要。

3.adb shell am force-stop <PACKAGE>

作用:强制关闭一个应用程序

举例:adb shell am force-stop com.lt.test

4.adb shell am broadcast [options] <INTENT>

作用:发送一个广播

举例:adb shell am broadcast -a "action_finish" (发送一个广播去关闭一个activity)

举例:adb shell am broadcast -a android.intent.action.MASTER_CLEAR(恢复出厂设置的方法,会清除内存所有内容)

举例:adb shell am broadcast -n com.lt.test/.MyBroadcast


5.性能分析之常用adb命令adb shell am start -W

格式为adb shell am start -W 包名/全类名或叫activity名

该命令具体实现在/frameworks/base/cmds/am/src/com/android/commands/am/Am.java,原理是跨Binder调用ActivityManagerService.startActivityAndWait() 接口,其中返回数据分别调用对应

startTime:  调用startActivityAndWait()的时间点

endTime:    调用startActivityAndWait()函数调用返回的时间点

WaitTime:   调用startActivityAndWait()调用耗时。

再通过之间的计算得到。查看页面启动时间:

以启动camera为例

C:\Users\Administrator>adb shell am start -W com.mediatek.camera/com.mediatek.camera.CameraLauncher
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.mediatek.camera/.CameraLauncher }
Status: ok
Activity: com.mediatek.camera/.CameraLauncher
ThisTime: 1340
TotalTime: 1340
WaitTime: 1384
Complete

打印的结果为

ThisTime   该activity启动耗时

TotalTime  应用自身启动耗时=ThisTime+应用application等资源启动时间

WaitTime   系统启动应用耗时=TotalTime+系统资源启动时间

在测试该启动时间时需要理解两个概念

冷启动:应用第一次启动

热启动:按back按键后再启动或非第一次启动切没有清除该应用后台或缓存数据

查看页面跳转的日志

adb logcat |grep "start u" -i

adb查看Android版本号和SDK版本号


获取系统版本:adb shell getprop ro.build.version.release

获取系统api版本:adb shell getprop ro.build.version.sdk

强制输入/过滤log

强制输入/过滤log_xxdw1992的博客-CSDN博客

安卓adb的一些操作

安卓adb的一些操作_xxdw1992的博客-CSDN博客_安卓adb

通过ADB命令录制视频和截图

通过ADB命令录制视频和截图_ChampionDragon的博客-CSDN博客

adb shell操作数据库

adb shell操作数据库_ChampionDragon的博客-CSDN博客

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值