您的位置:首页 > 其它

adb常用命令详解

2016-10-27 17:53 253 查看
自己在学习adb的时候,对adb的一些整理。

注意:

        最好在高版本模拟器上,低版本模拟器不支持部分命令。
        各手机之间或许会稍有不同。

1.window命令行下的adb 指令 
        
  a.查看链接终端设备: adb devices

  b.进入设备终端:adb -s 设备号 shell

                adb -s emulator-5554 shell-----进入emulator-5554模拟器注意:只要有多台设备,只要执行adb ,那么adb后一定跟  :-s 设备

  c.往手机存放文件 adb [-s 设备号] push pc文件路径  手机path

                adb -s emulator-5554 push e:\asm.jar /data/local/tmp-----将e盘下asm.jar存放到emulator-5554下的/data/local/tmp目录下(如果需要重命名那么:/data/local/tmp/asm2.jar)。如果目的目录已有文件,那么覆盖。

  d.从手机取文件存放到电脑: adb [-s 设备号] pull phone文件路径  pc_path

                adb -s emulator-5554 pull /data/local/tmp/asm2.jar e:\asm3.jar------将emulator-5554模拟器下的/data/local/tmp/asm2.jar文件存放到e盘,并重命名为asm3.jar,如果不想重命名保持原名e:\asm2.jar或者只写目录e:\ 
 。如果目的目录已有文件,那么覆盖。

  e.安装应用:adb install[ -r 重新安装并保留原数据][-f 安装到手机内存 /data目录][-s 安装到sdcard /sdcard目录]  apk 路径 ;

                adb -s emulator-5554 install -f e:\2048.apk-------将e盘下2048.apk安装到模拟器emulator-5554下的/data/app下(-f指定安装到/data/app下),该目录代表用户程序。需要说明的是:在安装过程中,系统会首先将2048.apk先拷贝到/data/local/tmp下,拷贝完成自动安装,安装会把2048.apk从/data/local/tmp拷贝到/data/app下,安装完毕/data/local/tmp下2048.apk会自动删除。

                adb -s emulator-5556 install -s e:\MyTest.apk -------将e盘下MyTest.apk安装到emulator-5556下的/mnt/asec目录下(-s指定安装到/mnt/asec下),该目录也带表用户程序。需要说明的是:在安装过程中,系统会首先将MyTest.apk拷贝到/mnt/sdcard/tmp下,拷贝完毕后自动安装,安装会把/mnt/sdcard/tmp下MyTest.spk拷贝到/mnt/asec下,安装完毕,/mnt/sdcard/tmp下MyTest.apk会自动删除。

                adb -s emulator-5556 install -r -s e:\MyTest.apk-------------在这里-r,表示,如果已经安装过该apk那么就重新安装一次,并保留原数据
        

        卸载应用:adb uninstall packname

                adb -s emulator-5554 uninstall com.example.test------MyTest.apk安装后,包名是com.example.test,在卸载的时候直接卸载包名。不需要指定包所在路径。不要把包名和apk名搞混。如果有多个模拟器需要指定哪个模拟器。
                
                pm命令:在window命令行下使用adb,但是用adb进入设备(模拟器或手机)后使用的是pm:进入的是哪个设备,pm就操作的哪个设备,因此在pm下不用指定设备。

        pm卸载应用:pm uninstall -k packname

                pm uninstall -k tiny.com.puzzle.number   卸载pm所在手机或模拟器的tiny.com.puzzle.number  不论是在/mnt/asec还是/data/app  都可以直接卸载,不用指定tiny.com.puzzle.number的路径。-k 表示保留该应用的一些数据文件和缓存文件

                pm只安装用户应用:pm install -r -f -s 手机文件路径; -r重新安装保留原数据, -f安装到手机内部,-s安装到sd卡

                有apk放于:/data/local/tmp/MyTest.apk,那么可以利用pm安装该apk

                pm install /data/local/tmp/MyTest.apk    默认安装到/data/app/目录下

                pm查看packname的apk安装路径:pm path packname   

                pm path com.example.test     显示:/data/app/com.example.test-2.apk

  f.冻结应用,开机启动项

        组件:包名/主Activity的全名,如:com.example.test/com.example.test.MainActivity

        冻结:pm disable packname | 组件

                你想禁止开机启动项,可以把应用给disable
                pm disable com.example.test     命令执行后,无法启动MyTest这个应用了。点击启动时,会提示这个应用没有安装到手机上,或跟本没有这个应用的图标了。

        解冻:pm enable packanme | 组件

                pm enable com.example.test                命令执行后,可以自动MyTest这个应用了,该应用的图标显示
        清除数据:pm clear packname;

                pm.clear com.example.test    清除应用的缓存数据    需要注意的是:低版本的模拟器可能不支持该命令,你需要直接输入pm,查看下该模拟器版本pm都有什么命令

  g.启动应用
        adb shell am start -n 组件名*************************************校验失败
        
  h.monkey测试:monkey -v -p packname 点击数

                window命令行下:adb -s emulator-5556 monkey -v -p com.example.test 500
                                                        指定模拟器                 猴子测试           被测的应用的包名   测试多少次
        shell下:monkey -v -p com.example.test 500

  i.端口转发forward
        adb forward tcp:1100 tcp:1200

  j.重启手机:adb reboot

  k.关机 :adb shell half

  l.重启到恢复模式:adb reboot recovery

  m.重启引导模式:adb reboot bootloader
        
  n.ctrl+c   退出设备回到window下命令行)

  o.进入手机时,需要按输入su进入root权限

  p.获取手机详细参数:adb -s 设备号 shell getprop  获取手机参数

2.linux 指令,也就是用adb shell进入设备后的操作指令

        --.pm setInstallLocation 0 1 2  设置应用安装的默认目录 0 auto 1 手机内存 2 sdcard
        
        --.pm getInstallLocation  查看应用安装的默认目录
        
        --.getprop  获取手机参数
        
        --.cat /proc/cpuinfo  获取手机cpu信息
        
        --.ls 列出目下所有文件 -l 详细信息 *
                ls  列出当前目录下所有文件和文件夹
                ls -l  列出当前目录下所有问价和文件夹的详细信息 ,包括:文件权限,用户组,日期,文件名
        
        --.df 查看磁盘空间
                df path:后面跟路径:如df /data/app   表示查看/data/app的磁盘空间,
                df:后面可以什么都不跟,直接df   表示查看所有的磁盘空间
                
        --.md5sum  获取文件md5码 md5sum /system/app/1.apk****************************校验失败
        
        --.halt 关机 不是所有手机都有此指令**************************校验失败
        
        --.reboot 重启手机
        
        --.id    获取当前用户信息,获取uid 和gid
                --:使用模拟器时:uid=0(root)  gid=0(root)
        
        --.gzip ,压缩成包
                --.gzip /data/local/tmp/test1.apk       结果:test1.apk.gz
                
        --.ungzip  ****************************************校验失败
                
        --.mount 查看磁盘信息
        
        --.mv 移动文件,重命名文件  mv /data/local/tmp/1.apk /data/local/tmp/2.apk
        
        --.rm 删除文件  rm -r 删除文件夹
                删除文件:rm /data/data/com.example.test/files/private.txt
                删除文件夹:rm -r /data/data/com.example.test/files
        
        --.mount -o remountn rw /system   挂载/system为可读可写

                解释:如果直接去chmod 777 system   ,那么会提示system :Read-only file system
                这时就需要用到mount,将system修改为可读写的,也就是修改其权限:mount -o remount rw /system ,可以对system文件进行读写操作。
                这时 再chmod 777 system  就不会报错 就会把system的权限修改为 -rwxrwxrwx
                
        --.mkdir 创建文件夹 创建多级文件 mkdir -p path
                mkdir /data/local/tmp2
                mkdir /sdcard/nihao
        
        --.echo "11" > /sdcard/a.txt;创建文件a.txt 并写入 “11”
                echo "fdsfsfsf" > /data/local/tmp2/a.txt    创建文件a.txt  并写入“fdsfsfsf”
                echo "sssssssssss" > /data/local/tmp2/a.txt   若文件已存在,则会覆盖原有的内容
                
        --.cat path 查看文件内容;
                cat /data/local/tmp2/a.txt    显示:ssssssssss   也就是a.txt里面的文本内容。不能查看目录,只能查看文件的内容
        
        --.cat 文件1 > 文件2     将 文件1复制一份到文件2 中
                cat /data/local/tmp2/a.txt > /data/local/tmp2/b.txt   将a.txt中内容复制到b.txt中,若b.txt不存在就创建,存在就覆盖。不能赋值目录,只针对文件
        
        --.cp path1 path2 复制文件
                cp /data/local/tmp2/a.txt /data/local/tmp2/ccc.txt
        
        --.touch "filepath" 创建空文件
                touch /data/local/tmp2/d.txt    在/data/local/tmp2/目录下创建一个空文件
        
        --.chmod 777 filepath ;修改文件或文件夹的读写权限。(修改文件夹的时候,文件夹前面不能有“/”)
                文件权限的十位解释:
                        第一位:d代表目录,-代表文件,l代表快捷方式

                        2-4位:代表该文件内部。权限值1,为三位之和,r=4 w=2 x=1 -=0 权限值=r+w+x
                        第二位(4):r代表该文件内可读,-代表该文件内不可读
                        第三位(2):w代表该文件内可写,-代表该文件内不可写
                        第四位(1):x代表该文件可执行,-代表该文件内不可执行

                        5-7位:代表同组内。权限值2,为三位之和,r=4 w=2 x=1 -=0  权限值=r+w+x
                        第五位(4):r代表同组内对该文件可读,-代表同组内对该文件不可读
                        第六位(2):w代表同组内对该文件可写,-代表同组内对该文件不可写
                        第七位(1):x代表同组内对该文件可执行,-代表同组内对该文件不可执行

                        8-10位:代表不同组。权限值3,为三位之和,r=4 w=2 x=1 -=0  权限值=r+w+x
                        第八位(4);r代表不同组内对该文件可读,-代表不同组内对该文件不可读
                        第九位(2);w代表不同组内对该文件可写,-代表不同组内对该文件不可写
                        第十位(1);x代表不同组内对该文件可执行,-代表不同组内对该文件不可执行

                三组权限值的并列,即为该文件的权限值:权限值1权限值2权限值3
                现有文件权限
                        -rw-rw----           private.txt
                        -rw-rw-r--                readable.txt
                        -rw-rw-rw-                rw.txt
                        -rw-rw--w-                writeable.txt 
                        
                命令:chmod 777 private.txt  
                结果:-rwxrwxrwx                private.txt
                解释:777=-权限值1(7)权限值2(7)权限值3(7)=(4+2+1)(4+2+1)(4+2+1)=(r w x)(r w x)(r w x)=-rwxrwxrwx

                chmod 426 private.txt
                -r---w-rw-                private.txt
                解释:426=-权限值1(4)权限值2(2)权限值3(6)=(4+0+0)(0+2+0)(4+2+0)=(r - -)(- w -)(r w -)=-r---w-rw-

        --.chown 0.0 filepath 赋所属用户及用户组,也就是修改用户组

                文件权限                用户组                        ........                        文件名
                -rw-rw----           u0_a49                        u0_a49                                private.txt
                -rw-rw-r--                u0_a49                        u0_a49                                readable.txt
                -rw-rw-rw-                u0_a49                        u0_a49                                rw.txt
                -rw-rw--w-                u0_a49                        u0_a49                                writeable.txt 

                组分类:          权限值
                app                  10000+        比如10023  表示为u0_a23    10049 --u0_a49  所以这种形式的都是app类别的
                shell                 2000
                system                 1000
                root                 0

                修改文件所属用户组,数字是uid
                chown 2000 private.txt        uid=2000
                chown 1000 readable.txt                uid=1000
                chown 0 rw.txt                uid=0
                chown 10002 writable.txt   uid>=10000
                
                修改后:
                文件权限                用户组                                                        文件名
                -rw-rw----           shell                        u0_a49                        private.txt
                -rw-rw-r--                system                        u0_a49                        readable.txt
                -rw-rw-rw-                root                        u0_a49                        rw.txt
                -rw-rw--w-                u0_a02                        u0_a49                        writeable.txt 
                

        --.ps 看进程信息;列出所有进程信息
                包括:
                USER        PID                PPID        USIZE                RSS                WCHAN                PC                        Packname
                root        1                0                296                        208                c0098770        0000e840        /init
                ..........................
                
        --.结束进程
                --ps ,查看所有进程信息
                --找到想要结束的进程的pid
                --kill pid   结束进程
                
        --.sleep 5;进程睡眠
                直接  sleep 8   当前命令行就sleep8秒,然后才能继续输入命令

3.root 下的操作
        
        --.获取手机联系人数据库
                --.adb -s emulator-5554 shell     进入模拟器
                --.cat /data/data/com.android.providers.contacts/databases/contacts2.db > /data/local/tmp/1.db   进入应用的包,找到数据库,复制一份到/data/local/tmp下,并命名为1.db
                --.adb pull /data/local/tmp/1.db e:\1.db    回到window命令行,将/data/local/tmp/1.db给拉到e盘上进行查看

        --.获取手机短信数据库
                --.adb -s emulator-5554 shell     进入模拟器
                --.cat /data/data/com.android.providers.telephony/databases/mmssms.db > /data/local/tmp/3.db    进入应用的包,找到数据库,复制一份到/data/local/tmp下,并命名为3.db
                --.adb pull /data/local/tmp/3.db e:\3.db    回到window命令行,将/data/local/tmp/3.db给拉到e盘上进行查看
        
        --.将一个应用安装为系统应用
                原理:将应用apk存放到/system/app下即可。
                举例:将MyTest.apk 安装到 模拟器emulator-5554的系统应用
                实现步骤:
                        --进入到模拟器
                                --adb -s emulator-5554 shell
                        --因为system和app默认是只读的,因此需要修改其权限,并重新挂载system为可读写
                                --mount -o remount rw /system   将system挂载为可读写
                                --chmod 777 system    将system修改权限为可读写执行
                                --cd /system    进入system目录
                                --chmod 777 app   将app修改权限为可读写执行
                        --退出模拟器
                                --ctrl + c
                        --将MyTest.apk拷贝到/system/app下
                                --adb -s emulator-5554 push e:\MyTest.apk /system/app
                        --拷贝成功,即安装成功。此时/data/data/下就有了MyTest.apk的包名。

        --. 卸载系统应用
                以录音机为例:
                 a.        pm path packanme 找到系统应用安装目录
                        所有的包都在/data/data/下,在该目录下找到包名:cd /data/data   找到录音机包名  com.android.soundrecorder 找到该包名的应用的apk的所在路径pm path com.android.soundrecorder    获得路径/system/app/SoundRecorder.apk
                 
                 b. rm apk_path;
                         由于系统system只读,因此用mount命令将其挂载,修改为可读写
                         在根目录下:mount -o remount rw /system
                         删除该路径apk:rm /system/app/SoundRecorder.apk
                 c.rm -r /data/data/packname
                         删除 /data/data/下包名的数据
                         rm -r /data/data/com.android.soundrecorder       -r表示删除文件夹
                 d.pm uninstall packname  系统应用和用户应用都可以
                        卸载应用:pm uninstall com.android.soundrecorder
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: