Android-ADB命令

来源:互联网 发布:阿里云服务器 yum 编辑:程序博客网 时间:2024/06/15 16:17

参考文章:

http://blog.csdn.net/yunnywu/article/details/7975451

http://blog.csdn.net/codehxy/article/details/49763701

Android 常用shell命令记录下来备忘

1,设置adb环境变量

其实就是将adb.exe的路径放到Path中,目的是cmd直接可以使用adb命令
比如我的adb.exe路径G:\tools\adt-bundle\sdk\platform-tools\adb.exe
我的电脑》高级》设置》环境变量》Path》增加G:\tools\adt-bundle\sdk\platform-tools (注意不要adb.exe)

2,检测环境变量

打开cmd窗口,输入adb看效果
如果出现一堆adb信息说明配置成功
如果出现’adb’ is not recognized as an internal or external command

3,进入shell

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

4,ls查看当前目录下的文件列表

ls -l /system/app/Demo.apk
rwxr-xr-x root root 48550 2016-02-22 21:55 CertificateInstallerProviders.apk
Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。
对rwxr-xr-x 的解读:
rwx(Owner)r-x(Group)r-x(Other)
这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。
命令中r=4,w=2,x=1,比如
chmod 644 system/app/Demo.apk命令执行以后,查看这个文件发现权限被修改了
ls -l /system/app/Demo.apk
-rw-r–r– root root 48550 2016-02-22 21:55 Demo.apk(将这个apk放在了system下面,而且还让它具有root权限了)

5,cd切换路径

cd /mnt/sdcard 切换到内存卡

6,mount挂载

mount -o remount,rw /system 将/system目录挂载,设置为可以读写
实例:
127|shell@android:/mnt/sdcard $ mount -o remount,rw /system
mount -o remount,rw /system
mount: Operation not permitted

如果出现mount: Operation not permitted说明没有root权限

7,su

前提是你的手机已经root了
su命令可以获取root权限
下面先获取root,获取root成功的时候$变成了#

255|shell@android:/mnt/sdcard $ su
su
root@android:/storage/sdcard0 # mount -o remount,rw /system
mount -o remount,rw /system
此时在执行挂载就可以成功

8,\n

在shell命令中的作用是换行

9,cp命令复制文件

cp -f /sdcard/SDKLongRrs.apk /system/app/SDKLongRrs.apk**
如果 cp: not found,说明该手机中cp命令不存在,换cat复制试试
127|root@android:/storage/sdcard0 # cat /sdcard/SDKLongRrs.apk> /system/app/SDKLongRrs.apk
rs.apk> /system/app/SDKLongRrs.apk <
右箭头>指明拷贝的方向哈

10,ls查看文件

查看一个拷贝是否成功
ls system/app/SDKLongRrs.apk
ls -a 列出当前目录下的所有文件

11,获取md5值

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

12,chmod修改文件权限

让apk变成可以安装的
chmod 644 /system/app/SDKLongRrs.apk

13,install安装apk

pm install -r /system/app/SDKLongRrs.apk

14,start 启动apk

启动Activity
am start -n com.googleplayapp.storerootsuaction/.MainActivity( 你得知道对应的界面的Activity路径以及包名)
启动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

15,clear 清除应用数据

pm clear com.googleplayapp.storerootsuaction

16,cmd下直接使用adb shell命令

如果不进入shell的,如何执行以上命令
cmd下面直接使用adb shell 后面跟上对应的命令就好
比如清除应用数据
adb shell pm clear com.googleplayapp.storerootsuaction

17,电脑复制文字到手机

比如手机要上百度,手机打开浏览器,点击地址栏,输入法切换到英文,cmd命令

adb shell input text "www.baidu.com"

你会看到手机浏览器的网址变成百度了

18,文件传输

电脑复制文件到手机
方法1:cmd下面使用push命令
adb push “C:\Users\Administrator\Downloads\Root.apk” /mnt/sdcard/goodRoot/
将电脑下载里面的Root.apk复制到手机sdcard的goodRoot文件夹下面
方法2:直接使用eclipse里面的File Explorer(对android程序员而言的哈)
复制手机文件到电脑
adb pull /sdcard/packages.xml C:\Users\linux\Desktop\packages.xml

19,cmd安装apk

adb install C:\Users\Administrator\Desktop\Root.apk
这个将电脑桌面的Root.apk安装到手机上
有可能不成功,直接看信息,对照英文找原因,比如小米的需要点击允许安装,在比如空间不足,在比如应用已经存在手机上

20,cmd卸载应用

adb uninstall com.googleplayapp.storeroot(你需要知道应用的包名哈)

21,快速获取文件路径

打开cmd,将文件拖进来,你就可以看到文件的路径哈

22,eclipse中File Explorer的使用

手机调试模式连接电脑,使用File Explorer可以查看手机文件;
root以后的手机可以查看data下面的文件
如果已经root,但是data打不开,使用以下命令
cmd下面
adb shell
shell@android:/ $ su root
chmod -R 755 /data
(R必须大写,linux命令区分大小写的,cmd命令不区分大小写,shell命令是一种linux命令)
点击这里查看chmod 755的含义

23,rm 删除命令

rm /system/bin/su 移除su文件

24,关闭程序

adb shell am force-stop 包名

25,一次卸载多个应用

adb uninstall com.android.a
adb uninstall com.android.b
adb uninstall com.android.c
adb uninstall com.android.d
adb uninstall com.android.e

将这多条命令写成一个.bat文件,直接点击bat就可以卸载多个应用了。

26,reboot重启手机

adb reboot 重启
adb reboot recovery 重启进入recovery模式

27,cat查看文件

cat error.txt 这个命令可以查看error.txt文件的内容

28,批量执行多条adb shell命令

adb命令带参数,cmd下面带上参数,先获取su,然后做其他事
演示在cmd下面可以直接使用su权限来删除/system/bin/testa文件和/system/xbin/testb
adb shell “su -c ‘rm -r -f /system/bin/testa’”
adb shell “su -c ‘rm -r -f /system/xbin/testb’”
如果是直接一条条执行shell命令将是下面的4条命令
adb shell
su
rm -r -f /system/bin/testa
rm -r -f /system/xbin/testb
如何批量执行多条命令呢
写一个.bat文件,文件内容如下:
adb shell “su -c ‘rm -r -f /system/bin/testa’”
adb shell “su -c ‘rm -r -f /system/xbin/testb’”
pause
保存为bat文件,直接点击执行.(windows系统下)。
(pause表示不关闭cmd窗口,这样就可以看到执行的结果了)

29,查看进程加载的库

可以根据进程id,查看进程加载了哪些库,cat /proc/pid/maps

30,kill 干掉进程

adb shell am force-stop
作用:强制关闭一个应用程序
举例:adb shell am force-stop com.lt.test
adb shell am force-stop比使用 kill -9 要方便
参考http://blog.sina.com.cn/s/blog_6294abe70101275q.html
ps可以查看到进程的pid
kill -s 9 pid干掉指定pid的进程
批量干掉进程
busybox pkill -9 父进程
ps
USER PID PPID VSIZE RSS WCHAN PC NAME
u0_a145 10608 134 292960 26816 ffffffff 4019ca70 S com.ex.thre
u0_a146 10755 134 302420 32152 ffffffff 4019ca70 S com.ex.two
使用kill -s 9 134,就可以干掉 PID =134. PID =10608. PID =10755三个进程

31,查看内存信息

看手机内存信息cat /proc/meminfo
查看应用的内存信息 dumpsys meminfo 应用包名

32,查看应用是否安装

查看应用的安装路径 pm path 应用包名
获取手机上已经安装的所有的程序 pm list packages

33,查看运行的程序

查看手机正在运行的程序 ps
查看自己的程序是否在运行 ps | grep 应用包名
如果没有grep命令,可以放置一个busybox工具到手机
查看360对应的程序是否在运行 ps | busybox grep m.qihoo*

34,删除多个文件

cd dir
rm * 删除dir中所有文件

35,adb获取手机参数

adb获取手机所有参数参考这个
adb shell getprop
adb获取iccid
service call iphonesubinfo 4(需要权限android.permission.READ_PHONE_STATE)
adb获取imei
adb -d shell dumpsys iphonesubinfo
adb获取androidid
androidid藏在这里[net.hostname]: [android-b33f3ac550112627]
命令:getprop net.hostname
adb获取serialno
命令:getprop ro.boot.serialno或者getprop ro.serialno
adb获取imei
service call iphonesubinfo 1
更多信息参考这个
http://stackoverflow.com/questions/27002663/adb-shell-dumpsys-iphonesubinfo-not-working-since-android-5-0-lollipop

36,使用”读取proc的方式”获取正在运行的进程

// 1,遍历”/proc”文件夹下面的文件夹,其中有些”文件夹名称”就是进程id(PID)
ls /proc
// 2,cat命令获取对应进程的名字(cat /proc/PID/cmdline)
cat /proc/1/cmdline 得到结果/init

37,查看进程具体的信息

(实例:12073是要查看的进程的PID)
cat /proc/12073/maps 查看进程的文件结构
cat /proc/12073/status 查看进程的状态

38,通过packages.xml文件查看app安装信息

在/data/system/packages.xml文件中,找到你应用相关内容
我在小米上使用cat /data/system/packages.xml命令得到以下数据

<package name="com.trafficctr.miui" codePath="/system/app/TrafficControl" nativeLibraryPath="/system/app/TrafficControl/lib"
    flags="540229" ft="152fdda2cc0" it="152fdda2cc0" ut="152fdda2cc0" version="29" userId="10069">
    .....
</package>

显然name就是包名,codePath就是安装的路径

39,使用shell启动和终止模拟器

adb shell stop//停止
adb shell start//启动

41,多设备选择

adb devices//显示处于调式模式的devices
adb -s emulator-5554 shell//表示选择5554模拟器的进入shell
42.busybox的安装
 

42,查看进程优先级

假设要查看程序com.test.app.a的进程优先级
adb shell(进入shell)
ps|grep com.test.app.a(列出这个进程)

u0_a37 28155 164 909516 36900 ffffffff b75baa27 S com.test.app.a

cat /proc/28155/oom_adj(获取这个进程的adj值)
adj值则在ProcessList中定义,adj的取值范围[-17,16],取值越大说明优先级越低。adj取值说明参考这里

43,dumpsys 查看内存,cpu,电量信息

1)查看所有内存信息
命令:dumpsys meminfo
2)查看某个包的内存信息
命令:dumpsys pkg_name
3)查看CPU信息
命令:adb shell dumpsys cpuinfo
4)查看电量信息
命令:dumpsys battery
参考这里:Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息

44,findstr 和grep过滤搜索

1)cmd下搜索包名为com.linux.test的进程
adb shell ps|findstr /i “com.linux.test”
2)shell下面搜索
先使用adb shell进去,然后使用grep命令过滤
ps|grep “com.linux.test”

45,adb 查看最上层成activity名字

adb shell dumpsys activity | findstr "mFocusedActivity"

附录:KEYCODE

KEYCODE_UNKNOWN=0;

KEYCODE_SOFT_LEFT=1;

KEYCODE_SOFT_RIGHT=2;

KEYCODE_HOME=3;

KEYCODE_BACK=4;

KEYCODE_CALL=5;

KEYCODE_ENDCALL=6;

KEYCODE_0=7;

KEYCODE_1=8;

KEYCODE_2=9;

KEYCODE_3=10;

KEYCODE_4=11;

KEYCODE_5=12;

KEYCODE_6=13;

KEYCODE_7=14;

KEYCODE_8=15;

KEYCODE_9=16;

KEYCODE_STAR=17;

KEYCODE_POUND=18;

KEYCODE_DPAD_UP=19;

KEYCODE_DPAD_DOWN=20;

KEYCODE_DPAD_LEFT=21;

KEYCODE_DPAD_RIGHT=22;

KEYCODE_DPAD_CENTER=23;

KEYCODE_VOLUME_UP=24;

KEYCODE_VOLUME_DOWN=25;

KEYCODE_POWER=26;

KEYCODE_CAMERA=27;

KEYCODE_CLEAR=28;

KEYCODE_A=29;

KEYCODE_B=30;

KEYCODE_C=31;

KEYCODE_D=32;

KEYCODE_E=33;

KEYCODE_F=34;

KEYCODE_G=35;

KEYCODE_H=36;

KEYCODE_I=37;

KEYCODE_J=38;

KEYCODE_K=39;

KEYCODE_L=40;

KEYCODE_M=41;

KEYCODE_N=42;

KEYCODE_O=43;

KEYCODE_P=44;

KEYCODE_Q=45;

KEYCODE_R=46;

KEYCODE_S=47;

KEYCODE_T=48;

KEYCODE_U=49;

KEYCODE_V=50;

KEYCODE_W=51;

KEYCODE_X=52;

KEYCODE_Y=53;

KEYCODE_Z=54;

KEYCODE_COMMA=55;

KEYCODE_PERIOD=56;

KEYCODE_ALT_LEFT=57;

KEYCODE_ALT_RIGHT=58;

KEYCODE_SHIFT_LEFT=59;

KEYCODE_SHIFT_RIGHT=60;

KEYCODE_TAB=61;

KEYCODE_SPACE=62;

KEYCODE_SYM=63;

KEYCODE_EXPLORER=64;

KEYCODE_ENVELOPE=65;

KEYCODE_ENTER=66;

KEYCODE_DEL=67;

KEYCODE_GRAVE=68;

KEYCODE_MINUS=69;

KEYCODE_EQUALS=70;

KEYCODE_LEFT_BRACKET=71;

KEYCODE_RIGHT_BRACKET=72;

KEYCODE_BACKSLASH=73;

KEYCODE_SEMICOLON=74;

KEYCODE_APOSTROPHE=75;

KEYCODE_SLASH=76;

KEYCODE_AT=77;

KEYCODE_NUM=78;

KEYCODE_HEADSETHOOK=79;

KEYCODE_FOCUS=80;//*Camera*focus

KEYCODE_PLUS=81;

KEYCODE_MENU=82;

KEYCODE_NOTIFICATION=83;

KEYCODE_SEARCH=84;

KEYCODE_MEDIA_PLAY_PAUSE=85;

KEYCODE_MEDIA_STOP=86;

KEYCODE_MEDIA_NEXT=87;

KEYCODE_MEDIA_PREVIOUS=88;

KEYCODE_MEDIA_REWIND=89;

KEYCODE_MEDIA_FAST_FORWARD=90;

KEYCODE_MUTE=91;


0 0
原创粉丝点击