您的位置:首页 > 其它

adb 连接设备的常用命令和DOS常用命令

2016-10-21 09:32 239 查看

做项目的时候,由于工作的特殊性,经常会到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

3.查看系统应用

adb shell ls system/app

4.查看设备上第三方应用

adb shell ls data/app

5.获取系统权限

adb remount

6.获取系统权限

adb shell chmod 777 system/app

7.重启设备

adb reboot

8.把应用push到系统中

adb push xxx.apk system/app

9.删除系统应用

adb shell rm system/app/xxx.apk

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

where adb

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

adb forward tcp:5555 tcp:8000

12.修改adb的端口号:

在系统变量中,新建一个变量:ANDROID_ADB_SERVER_PORT,然后设置端口号即可,最后要重新开启一个dos窗口。不要与系统其它端口冲突。

如图:



当手机安装完成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();
}
}


以上两种方法,都是能让你的设备重启的!如果觉得对你有点用的话,就给点个赞吧,,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: