Android 手机 无线 ADB
要用网络调试Android需要设备已经获取root权限
$su
#stop adbd
#setprop service.adb.tcp.port
#start adbd
然后在电脑端cmd中输入adb命令:
adb connect <手机ip地址(端口默认是5555)>
$su
#stop adbd
#setprop service.adb.tcp.port
#start adbd
Android手机WiFi调试,查看logcat
在项目开发过程中,遇到这样的场景:
有写特殊Android设备只有一个USB口,当挂载U盘之后就无法连接USB实时进行调试了。这儿时候如果设备可以开启WiFi,那就可以用WiFi进行调试;
要开启网络调试,执行下面指令即可:
$su
#stop adbd
#setprop service.adb.tcp.port
#start adbd
上面完成之后就可以用adb命令:
adb connect 192.168..xx//Android设备的ip地址;
上述在设备连接电脑执行cmd时在
"stop adbd",// 关闭adbd
这一步会有问题,执行之后USB就断开了,无法执行接下来的打开指令;
那怎么办呢?
想到直接做一个apk,安装在手机上执行,于是就有了下面的apk:
public void excuteStartShell() {
String[] commands = new String[] {
"setprop service.adb.tcp.port 5555",// 设置监听的端口,端口可以自定义,如5554,5555是默认的
"stop adbd",// 关闭adbd
"start adbd",// 重新启动adbd
};
try {
List<String> temp = RootTools.sendShell(commands, 10, 3000);
for (int i = 0; i < temp.size(); i++) {
Log.i(TAG, "__This is result from root:__" + temp.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void excuteStopShell() {
String[] commands = new String[] {
"setprop service.adb.tcp.port -1",// 设置监听的端口,端口可以自定义,如5554,5555是默认的
"stop adbd",// 关闭adbd
"start adbd",// 重新启动adbd
};
try {
List<String> temp = RootTools.sendShell(commands, 10, 3000);
for (int i = 0; i < temp.size(); i++) {
Log.i(TAG, "__This is result from root:__" + temp.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
通过网络使用adb
在adb的说明文档中提到:
“An ADB transport models a connection between the ADB server and one device
or emulator. There are currently two kinds of transports:
- USB transports, for physical devices through USB
- Local transports, for emulators running on the host, connected to
the server through TCP”
大意是说,在物理设备上,adb是通过USB连接到设备上的,而在模拟器上,adb是通过TCP协议连接到设备上的。
实际上在物理设备上,也可以让adb通过TCP协议来连接设备(当然前提条件是你的设备要有网口)。
首先看一下下面这段源代码,出自system/core/adb/adb.c,第921行:
/* for the device, start the usb transport if the
** android usb device exists and "service.adb.tcp"
** is not set, otherwise start the network transport.
*/
property_get("service.adb.tcp.port", value, "");
if (sscanf(value, "%d", &port) == && port > ) {
// listen on TCP port specified by service.adb.tcp.port property
local_init(port);
} else if (access("/dev/android_adb", F_OK) == ) {
// listen on USB
usb_init();
} else {
// listen on default port
local_init(ADB_LOCAL_TRANSPORT_PORT);
}
分析上述代码可以发现,在adbd启动时首先检查是否设置了service.adb.tcp.port,
如果设置了,就是使用TCP作为连接方式;
如果没设置,就去检查是否有adb的USB设备(dev/android_adb),如果有就用USB作为连接方式;
如果没有USB设备,则还是用TCP作为连接方式。
因此只需要在启动adbd之前设置service.adb.tcp.port,就可以让adbd选则TCP模式,
也就可以通过网络来连接adb了。
这需要修改init.rc文件。如果不想修改,也可以在系统启动之后,在控制台上执行下列命令:
#stop adbd
#set service.adb.tcp.port 5555
#start adbd
这样就可以在主机上通过下列命令来连接设备了:
adb connetc <ip-of-device>:5555
adb同时支持USB和TCP调试
最近要调试otg功能,usb被占用,只能用无线adb来调试。
无线刷机不方便,网上下载的无线adb经常需要root,并且有写无线adb无法使用,push apk比较麻烦。
附上修改的代码,同时支持USB和tcp调试,不用每次刷机后push apk。
property_get("service.adb.tcp.port",value, "");
if(sscanf(value, "%d", &port) == && port > ) {
// listen on TCP port specified byservice.adb.tcp.port property
local_init(port);
} else if(access("/dev/android_adb", F_OK) == ) {
// listen on USB
usb_init();
} else {
// listen on default port
local_init(ADB_LOCAL_TRANSPORT_PORT);
}
修改后
property_get("service.adb.tcp.port", value, "");
if (sscanf(value, "%d",&port) == && port > ) {
// listen on TCP port specified byservice.adb.tcp.port property
local_init(port);
}
if (access("/dev/android_adb",F_OK) == ) {
// listen on USB
usb_init();
} else {
// listen on default port
local_init(ADB_LOCAL_TRANSPORT_PORT);
}
要两个一起修改,不然修改了第一点USB就不能用了。
Android 手机 无线 ADB的更多相关文章
- Android手机无线adb
1.首先电脑,手机通过数据线链接电脑,然后通过adb devices 查看到已连接 2.输入:adb tcpip 5555 3.输入:adb connect 222.222.221.137:5555 ...
- win7 cmd终端连接android手机运行adb shell脚本命令
win7 cmd终端连接android手机运行adb shell脚本命令 (2013-03-22 20:13:57) 转载▼ 标签: android it shell 连接 linux 分类: 嵌入式 ...
- 将Android手机无线连接到Ubuntu实现唱跳Rap
您想要将Android设备连接到Ubuntu以传输文件.查看Android通知.以及从Ubuntu桌面发送短信 – 你会怎么做?将文件从手机传输到PC时不要打电话给自己:使用GSConnect就可以. ...
- 使用adb命令操控Android手机(adb命令)
1) 手机连接电脑之前 首先,查看安卓手机是否已经连接上电脑 adb devices 让adb一直查找安卓设备,找到后才停止 adb wait-for-device 2) 手机连接电脑后的操作 2.0 ...
- (转载)Mac系统下利用ADB命令连接android手机并进行文件操作
Mac系统下利用ADB命令连接android手机并进行文件操作 标签: Mac adb android 2016-03-14 10:09 5470人阅读 评论(1) 收藏 举报 分类: Androi ...
- adb无线连接android手机进行调式,无需获得root权限
利用adb无线连接android手机进行调式 无需获得root权限 转载来自CSDN https://blog.csdn.net/lnking1992/article/details/5346518 ...
- Pyqt adb 获取Android手机屏幕
adb的全称为Android Debug Bridge,就是起到调试桥的作用.adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会da ...
- Andy - 又一款速度流畅的免费安卓 Android 模拟器 (支持手机无线控制电脑模拟器)
随着 Genymotion.BlueStacks 等电脑上的 Android 模拟器流行起来之后,似乎很多人都发现在电脑上运行使用安卓APP软件.畅玩手机游戏确实很有乐趣. 今天我们又发现了一款全新免 ...
- [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...
随机推荐
- TF-tf.nn.dropout介绍
官方的接口是这样的 tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None) 根据给出的keep_prob参数,将输入te ...
- 移动端Touch事件
案例1: <!doctype html> <html lang="en"> <head> <meta charset="UTF- ...
- set,list,map分析
想了下集合,列表,映射三者关系 set,list,map ArrayList采用数组方式存储数据,继承List; LinkedList采用链表方式存储数据,继承List; 所以数组方式都有下表,以及每 ...
- JVM性能调优监控工具——jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望 ...
- ThinkPHP中的四种路由形式
1.普通形式路由(get形式路由) 路由形式:http://网址/入库文件?m=分组&c=控制器&c=控制器&a=方法名&参数=参数 例子:http://localho ...
- CCF CSP 201409-4 最优配餐
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-4 最优配餐 问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越 ...
- 【LOJ】#2039. 「SHOI2015」激光发生器
题解 我永远都写不对计算几何-- 首先找到反射的线段比较好找,扫一遍所有线段然后找交点在镜子上并且交点离起点最近的那条线段 然后旋转的时候,有可能是顺时针,也有可能是逆时针,要找出法线,然后判断法线和 ...
- USACO 6.2 Packing Rectangles
Packing RectanglesIOI 95 The six basic layouts of four rectangles Four rectangles are given. Find th ...
- Caffe训练AlexNet网络,精度不高或者为0的问题结果
当我们使用Caffe训练AlexNet网络时,会遇到精度一值在低精度(30%左右)升不上去,或者精度总是为0,如下图所示: 出现这种情况,可以尝试使用以下几个方法解决: 1.数据样本量是否太少,最起码 ...
- Pig的安装和简单使用
1.Pig是基于hadoop的一个数据处理的框架. MapReduce是使用java进行开发的,Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MR来运行.2.Pig的数据处理语言是数据流 ...