Android 开启无线调试
环境要求
- PC端需要配置Adb环境
- 使用python脚本需要python3.0+环境
原生命令行方法调用
- 把设备通过数据线连接到PC中
- 执行命令
adb devices -l
有设备即可 - 打开Android设备调试端口
5555
执行命令adb tcpip 5555
- 打开成功后,此时可拔掉数据线
- 执行无线连接命令
adb connect 172.16.10.11
- 连接成功即可拔掉数据线
使用脚本,一键连接
既然是执行固定操作,那么我们就可以通过脚本控制,
- 获取设备信息
- 打开设备调试端口
- 获取指定设备的IP地址
- 连接IP
- 连接成功,拔掉数据线
代码如下:
import os
import sys
import re
import time
import DeviceModule
if __name__ == '__main__':
deviceModel = DeviceModule.Device_Model()
device_id = deviceModel.select_devices()
time.sleep(2)
cmd = 'adb -s {} tcpip 5555'.format(device_id)
print(cmd)
cmd_exr = os.popen(cmd)
result = cmd_exr.read()
# print(result)
if result.lstrip().startswith('restarting in') and result.rstrip().endswith('5555'):
print('\033[1;32m5555 端口已打开\033[0m')
time.sleep(1)
cmd = 'adb -s {} shell ifconfig wlan0'.format(device_id.strip())
print(cmd)
cmd_exr = os.popen(cmd)
result = cmd_exr.read()
for line in result.splitlines():
if line.lstrip().startswith('inet addr'):
pattern = re.compile(r'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
ip_str_obj = pattern.search(line)
ip_str = ip_str_obj.group(0)
print('连接IP:\033[1;33m %s\033[0m' % ip_str)
cmd_exr = os.popen('adb connect {}'.format(ip_str))
result = cmd_exr.read()
if result.lstrip().startswith('connected') and result.rstrip().endswith('5555'):
input('连接成功')
else:
input('连接失败:' + result)
break
else:
print("端口打开失败: %s" % result)
解析设备列表
文件名:DeviceModule.py
import os
import sys
def get_device(device_line):
arr = device_line.split()
# print(arr)
dev_mod = Device_Model()
dev_mod.id = arr[0]
dev_mod.status = arr[1]
try:
temp_arr = arr[4].split(':')
dev_mod.device = temp_arr[1]
except Exception as e:
dev_mod.device = '无法获取'
try:
temp_arr = arr[2].split(':')
dev_mod.product = temp_arr[1]
except Exception:
dev_mod.product = '未知'
try:
temp_arr = arr[3].split(':')
dev_mod.model = temp_arr[1]
except Exception:
dev_mod.model = '未知'
return dev_mod
class Device_Model:
def __init__(self):
self.id = ''
self.status = ''
self.product = ''
self.model = ''
self.device = ''
self.transport_id = ''
def select_devices(self):
cmd_exr = os.popen('adb devices -l')
result = cmd_exr.read().rstrip()
lines = result.splitlines()
if len(lines) == 2:
device = get_device(lines[1])
print('\033[1;32muse device %s \033[0m' % device.id)
return device.id
else:
dev_list = []
dev_list.clear()
for index, dev in enumerate(lines):
if index == 0:
continue
dev = get_device(dev)
print('\033[1;33m%d、%s %s - %s %s\033[0m' % (index - 1, dev.id, dev.model, dev.device, dev.status))
dev_list.append(dev.id)
sel = 0
if len(dev_list) == 0:
print('没有设备')
input('按下 Enter 结束......')
sys.exit(0)
try:
sel = int(input('存在多个设备,请输入序号[0]: '))
except Exception as e:
sel = 0
if sel >= len(dev_list):
sel = len(dev_list) - 1
return dev_list[sel]
来个预览:
多个设备时:
查看设备列表可以发现 设备列表