adb 连接设备的常用命令和DOS常用命令(2021-07-31更新)--基础篇

做项目的时候,由于工作的特殊性,经常会到adb命令,今天就总结一下常用命令吧:

有个大前提就是设备已经root了。

adb是什么?
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。

adb有什么用?
借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作


1.连接设备
adb connect 192.168.22.232

2.断开连接的设备
adb disconnect

这里说一个小技巧:
我们不用一个一个字母输入路径,直接把你的apk文件,拖到到cmd界面光标处即可!

3.安装apk
adb install C:\Users\lg\Desktop\adb_install\app-debug.apk

4 覆盖安装apk
adb install -r C:\Users\lg\Desktop\adb_install\app-debug.apk

5 卸载apk
adb uninstall so.laodao.xxx (apk的包名)

6.查看系统应用
adb shell ls system/app

7.查看设备上第三方应用
adb shell ls data/app

8.获取系统权限
adb remount

9.获取系统权限
adb shell chmod 777 system/app

10.重启设备
adb reboot

11.把应用push到系统中
adb push xxx.apk system/app

12.删除系统应用
adb shell rm system/app/xxx.apk

13.查看电脑中有几个adb程序
where adb

14.发布端口: 你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000

15.修改adb的端口号:
在系统变量中,新建一个变量:ANDROID_ADB_SERVER_PORT,然后设置端口号即可,最后要重新开启一个dos窗口。不要与系统其它端口冲突。
如图:
这里写图片描述

16:查看所有程序包名
adb shell pm list packages

17:查询手机cpu命令行:
adb shell getprop ro.product.cpu.abi
在这里插入图片描述
18:查看真实系统版本:
adb shell getprop ro.build.verison.release

19:查看真实分辨率:
adb shell wm size

20:查看真实内存:
adb shell df -h

21:查看cpu相关信息
adb shell cat /proc/cpuinfo
22:查看厂商都对系统都进行了那些修改(可能会被拒绝):
adb shell cat /system/build.prop


想全程不用usb数据线链接Android设备!

(1)Android端(安装 jackpal.androidterm_1.0.70_liqucn.com.apk):

终端中输入一下命令:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

(2)PC端CMD:

1、计算机-属性-高级-环境变量,新建系统环境变量
变量名:ANDROID_ADB_SERVER_PORT
变量值:5555

2、重启一下电脑,最好重启一下电脑!

3、运行CMD
输入 adb connect Android设备的IP地址

参考文章:
全程不用usb数据线,adb通过网络连接Android设备.rar


当手机安装完成apk之后,可以通过如下方法启动apk:(pkg:包名)

1.通过命令 adb shell am start -n pkg/.MainActivity

2.通过 adb shell monkey -p pkg -v 1(优先)

3.通过 adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n pkg/.MainActivity

adb 对数据库的操作:

清空本地数据库:adb shell rm -r data/data/pkg/databases

查看本地数据库:adb shell ls data/data/pkg/databases

拉取数据库:adb pull data/data/pkg/databases/表名

强制关闭一个应用程序:
adb shell am force-stop pkg


端口被占用,查看是谁在占用端口,并且kill掉该进程的方法:

方式一
5037为adb默认端口,若5037端口被占用,
查看占用端口的进程PID
C:\Users\wwx229495>netstat -aon|findstr 5037
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3676

通过PID查看所有进程
C:\Users\wwx229495>tasklist /fi “PID eq 3676”

映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
svchost.exe 3676 Services 0 13,800 K

杀死占用端口的进程
C:\Users\wwx229495>taskkill /pid 3676 /f
成功: 已终止 PID 为 3676 的进程。


手机终端连接命令:(是在手机端输入的)
su
setprop service.adb.tcp.port -1
stop adbd
start adbd


####如果没有root怎么办呢?不过还是有办法的!

C:\Users\zhyantai>adb shell

shell@X3:/ $ run-as com.example.daemon(你的包名)

shell@X3:/data/data/com.example.daemon $ ls
cache
code_cache
program_cache
shared_prefs

shell@X3:/data/data/com.example.daemon $ cd shared_prefs

//将special_config(你的文件名)文件拷贝到/mnt/sdcard/目录下
shell@X3:/data/data/com.example.daemon/shared_prefs $ cat special_config.xml > /mnt/sdcard/special_config.xml   

shell@X3:/data/data/com.example.daemon/shared_prefs $

//最后,从sdcard目录下,pull文件。注意,去该目录下,并不能看到special_config该文件。但是它是存在的。
C:\Users\zhyantai>adb pull /mnt/sdcard/special_config.xml
[100%] /mnt/sdcard/special_config.xml


常用DOS命令:
cd
cd 目录名:进入特定的目录。如果看到有个目录显示为:abcdef ghi 就
输入:cd abcdef.ghi进入该目录。
cd\ 退回到根目录。
cd…退回到上一级目录。

notepad--------打开记事本


代码中,重启你的设备

前提你的设备是要获取 root 权限的哦!

方法一:

public class MainActivity extends AppCompatActivity {

    private static Timer timer1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timer(3000);
            }
        });


    }

    //used to alert UI of install done and then reboot., not perform it until timeout.
    //in  order to have enough time for the transfer.
    public static void timer(int delaytime) {
        timer1 = new Timer();
        timer1.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("now, reboot");
                execShell("reboot");
            }
        }, delaytime);
    }

   //关键方法
    public static void execShell(String cmd) {
        try {
            //权限设置
            Process p = Runtime.getRuntime().exec("su");
            //获取输出流
            OutputStream outputStream = p.getOutputStream();
            DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
            //将命令写入
            dataOutputStream.writeBytes(cmd);
            //提交命令
            dataOutputStream.flush();
            //关闭流操作
            dataOutputStream.close();
            outputStream.close();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

方法二:
关键代码如下:


 public static void reBootByRuntime() {
        try {
            Log.v("reBootByRuntime", "root Runtime->reboot");
            Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot "});  //重启
            proc.waitFor();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

以上两种方法,都是能让你的设备重启的!如果觉得对你有点用的话,就给点个赞吧,,

monkey测试 常用命令:

adb devices


adb shell monkey -p site.conit.app.blackboard --throttle 1000 100


adb shell monkey -p site.conit.app.blackboard -s 100 --throttle 1000 100

adb shell monkey -p site.conit.app.blackboard --pct-touch 100 -s 100 --throttle 1000 100

命令说明:
--throttle 1000 事件执行间隔为1秒

-s 100  seed 参数,指定随机生成数seed值,意思是:可以让执行的事件每次都一样

--pct-touch 100  触摸事件占比100%。 --pct-touch ,设定触摸事件的百分比

--pct-appswitch 40  切换activity事件占比40%。

--pct-motion 30  点击事件占比30%。


--ignore-crashes  忽略崩溃和异常

--ignore-timeouts  忽略超时事件ANR

adb 命令–进阶篇

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值