当有多个设备online时,命令行窗口通过adb连接指定设备方法

当有多个设备online时,命令行窗口通过adb连接指定设备方法,第1张

您好,很高兴为您解答。

1. 通过adb devices命令获取所有online设备的serial number。

C:\Users\Administrator>adb devices

List of devices attached

emulator-5554 device

SH0A6PL00243device

上面表示,当前有两个设备online,第一个emulator-5554是模拟器,后一个是真机会SH0A6PL00243。

2. 通过adb -s <serial number>cmd向设备发送adb命令。

比如:运行命令shell。

C:\Users\Administrator>adb -s SH0A6PL00243 shell

#

比如:down一个应用的数据库到本地f:\test目录下面。

C:\Users\Administrator>adb -s SH0A6PL00243 pull data/data/com.android.tencent/databases/AgendaDetails.db f:\test

555 KB/s (5120 bytes in 0.009s)

C:\Users\Administrator>

运行其它命令和运行pull命令一样的,只是在adb和cmd之间需要额外添加-s <serial number>即可。

控制台进入$sdk/platform-toos/目录,先输入查看设备命令

结果如下:

可以看到有两个设备,一个是Genymotion的模拟器,一个是真机,如果直接输入

会得到以下提示:

这个时候需要加上具体的设备代号才会进入shell,命令如下:

比如,我进入Genymotion的shell:

进入成功

你是想用代码实现吗?

你可以启动多个线程,在线程里面进行安装,这样可以同时多个手机安装;

也可以写方法,在方法里面进行安装,这样是顺序安装;

主要方法是:调用 adb install + apk的绝对路径名;

如果有多部手机,调用adb -s + 手机编号(如果不知道怎么获取,请继续回复)+ install + apk绝对路径;

在代码里执行:Runtime.getRuntime().exec(

"adb -s " + devName + " install " + apkAddress)

private void installApkToMobile(String devName, String apkAddress)

{

Process process = null

String buff = ""

try

{

process = Runtime.getRuntime().exec(

"adb -s " + devName + " install " + apkAddress)

BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8"))

while ((buff = br.readLine()) != null)

{

print(buff)

if (buff.contains("INSTALL_FAILED_ALREADY_EXISTS"))

{

print(devName + "已安装")

}

}

br.close()

} catch (IOException e)

{

e.printStackTrace()

}

}

我现在也是在做这样的东西,欢迎继续讨论,相互学习。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11870693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存