华为荣耀play使用WiFi调试Android的坑

要想使用无线调试有两个必须条件:

1.手机和我们的电脑要处于同一网络,就是两个设备之间的ip地址能够ping通。

2.安装了adb,作为android开发者都应该知道它的路径是在sdk下的 platform-tools的文件夹里面,当然你也可以单独下adb。 有了上面两个条件,下面我们来说下如何实现无线连接调试我们的应用程序。 准备工作:</p> <p>1.PC和手机都已连上同一个WIFI。台式没无线的可以买个无线网卡或小米WIFI。

2.用PC ping 手机,要能ping通(手机IP一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,或者是WIFI里高级选项;也可以在PC上进入adb,输入netcfg查看)

3.用手机ping PC,要能ping通(此步可以先略过,不行再来做)。手机ping PC可以在手机上装个工具,我用的FPing。如果ping不通,先检查一下是不是关闭了所有的电脑管家、杀毒软件、WINDOWS自身的防火墙。</p> <p>1.首先把我们的手机连接到电脑上。

通过usb连接电脑:

1.设置手机无线调试的端口号。 adb tcpip 5555

2.WiFi无线连接上手机。 adb connect 手机IP:5555

3.拔掉手机数据线,就可以wifi连接手机了。

4.如果想断开连接,则执行。 adb disconnect 手机IP:5555 5.在命令行里cd到我们的sdk下的 platform-tools的路径找到我们的adb命令输入 ,输入adb devices查看我们连接的设备 重点来了: 以上方法,已经适用了大部分机型  ,但在最近的测试中, 华为的荣耀6X,play ,却出现了问题,在我打了之上adb 命令之后,不拔出数据线 显示连接成功, 你会觉得 MD ,可以了? ------------------------ 错了----- 等你满怀开心可以无线调试  拔掉数据线一看, 连接就断了, 到底什么情况呢,  不卖关子了, 在一番了解测试之后,才知道是系统内置模式的问题 :(adb无线调试,显示:由于目标计算机积极拒绝, 无法连接. (10061)-另-调试无LOG信息,文中有提到。)

1: 拨号键输入   *#*#2846579#*#*   进入工程菜单,其它menu  不要管, 进入后台设置   ,点击USB端口修改生产模式 。  当你调试 时候  没有LOG 信息输出 , 那就在此 menu 将LOG 设置打开,全选。      后台调试此menu ,望大家跳过, 开启是需要密码的, 傻吊 工程师设置的, 最好不要乱选,选了之后 回来 是会重启,导致你之前设置的生产模式  和 LOG信息开关 重置。

 

转载于:https://my.oschina.net/u/4203864/blog/3101698

<think>好的,我现在要处理用户的问题,用户问的是:“二、Android设备自动开启USB共享(需ADB调试)这个也可以实现同样的效果是吗”。首先,我需要回顾之前的对话历史,确保理解上下文。 用户之前询问了如何通过Tasker和AutoHotKey实现自动化控制,比如USB插入时开启共享,网络断开关闭热点,电量低时停止共享。现在用户的问题是关于另一种方法,即使用ADB调试来实现同样的效果。用户想知道是否通过ADB调试也能达到自动开启USB共享的目的。 首先,我需要确认用户的问题核心:是否通过ADB命令,无需Tasker这样的自动化工具,也能自动触发USB共享。这涉及到ADB命令的功能以及如何自动化执行这些命令。 接下来,我需要整理ADB相关的知识。ADB(Android Debug Bridge)允许通过命令行与Android设备通信。用户可能知道,通过ADB可以发送命令来开启或关闭USB网络共享,例如使用`svc usb setFunctions rndis`命令。但是,ADB本身是手动执行的,用户的问题可能在于如何自动化这个过程,比如在检测到USB插入时自动运行ADB命令。 这里可能需要结合其他工具或脚本,比如在电脑端使用AutoHotKey检测USB插入事件,然后触发ADB命令。或者,在Android设备上使用ADB授权的Tasker来执行命令,这样不需要root权限。用户之前提到过需要ADB调试,所以可能他们的设备没有root,但已经开启了ADB调试权限。 需要注意的是,ADB命令的执行通常需要连接到电脑,这意味着如果用户希望完全在设备端自动化,可能需要其他方法,比如使用Termux等终端模拟器结合脚本。但用户的问题可能更倾向于通过ADB在电脑端触发命令,从而实现自动化。 此外,用户可能关心的是,相比之前的Tasker方案,ADB方案是否需要更多的设置步骤,或者是否更稳定。需要指出两种方法的优缺点:Tasker可以在设备端直接响应事件,而ADB可能需要电脑端的辅助,但可能不需要root权限。 还需要考虑不同Android厂商的定制系统可能导致命令不同,比如华为设备可能需要不同的ADB命令来启用USB共享。因此,在回答时需要提到兼容性问题,并建议用户根据设备型号进行调整。 总结用户的需求,他们希望了解是否有替代方法来实现同样的自动化效果,特别是使用ADB调试而不是Tasker。需要明确回答是否可行,并给出具体步骤和注意事项,确保用户能够理解并实施。</think>--- ### **是的!通过ADB调试可以直接控制USB网络共享,且无需Root权限** 以下是具体实现方案及与原Tasker方案的对比: --- ### **一、ADB方案核心原理** 1. **底层命令**:Android系统隐藏的`svc usb`命令可直接控制USB功能。 - 开启共享:`adb shell svc usb setFunctions rndis` - 关闭共享:`adb shell svc usb setFunctions none` 2. **依赖条件**: - 已开启USB调试开发者选项) - 电脑已安装ADB工具并授权设备连接 --- ### **二、与原Tasker方案的对比** | **能力** | **Tasker方案** | **ADB方案** | |------------------------|-----------------------------------|--------------------------------| | 是否需要Root | 部分命令需Root | 无需Root | | 自动化触发条件 | 设备端直接响应(如USB插入、电量) | 依赖电脑端脚本检测并发送ADB命令 | | 跨设备联动 | 可独立完成 | 需搭配PC脚本(如AutoHotKey) | | 兼容性 | 依赖设备Shell命令支持 | 通用性更强(Android 4.0+) | --- ### **三、ADB自动化实现步骤** #### **场景1:USB插入电脑时自动开启共享** 1. **电脑端脚本(以Windows+AutoHotKey为例)** ```ahk Loop { ; 检测USB设备插入(需替换设备ID) RunWait, devcon status "USB\VID_1234&PID_5678", Hide if (ErrorLevel = 0) { ; 发送ADB命令开启共享 Run, adb shell svc usb setFunctions rndis } Sleep, 5000 ; 每5秒检测一次 } ``` - **获取设备ID**: 1. 插入手机 → 打开CMD → 执行 `devcon hwids USB\*` 2. 找到手机对应的`VID_XXXX&PID_XXXX` 2. **Android端配置** - 开启开发者选项和USB调试 - 首次连接时在手机上授权电脑ADB权限 --- #### **场景2:电量低于阈值时关闭共享** 需结合电脑端轮询检测: ```ahk Loop { ; 获取手机电量(需Android 5.0+) RunWait, adb shell dumpsys battery | find "level", Hide batteryLevel := SubStr(ErrorLevel, 1, 2) ; 提取电量值 if (batteryLevel < 20) { Run, adb shell svc usb setFunctions none } Sleep, 60000 ; 每1分钟检测一次 } ``` --- ### **四、ADB方案的优缺点** #### **优势** - **无需Root**:适合厂商锁Bootloader的设备(如三星、华为) - **精准控制**:直接调用系统级API,避免第三方工具兼容问题 #### **局限性** - **依赖电脑**:需保持USB连接或网络ADB连接(WiFi调试) - **延迟较高**:检测逻辑由电脑端轮询实现,实时性低于Tasker --- ### **五、替代方案(纯Android端无需电脑)** 1. **ADB + Termux定时任务** - 在Android安装Termux终端 - 编写Shell脚本定时检测USB状态: ```bash while true; do if [ $(dumpsys usb | grep "rndis" | wc -l) -eq 0 ]; then adb shell svc usb setFunctions rndis fi sleep 10 done ``` 2. **简化版工具** - 使用 [Shizuku](https://shizuku.rikka.app/) + [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid) - 通过Shizuku授权MacroDroid调用`svc usb`命令 --- ### **六、注意事项** 1. **ADB命令兼容性** - 华为/荣耀设备需改用:`adb shell settings put global usb_tethering_enabled 1` 2. **USB授权弹窗** - 部分手机插入USB时会弹出“文件传输/充电”弹窗,需手动选择“不传输文件”模式 3. **WiFi调试备用** - 若需断开USB仍保持控制,可启用WiFi调试: ```bash adb tcpip 5555 # USB模式下执行 adb connect 手机IP:5555 # 后续通过WiFi连接 ``` --- 如果需要更具体的脚本调试或设备适配,建议提供您的手机型号和系统版本(如“小米12,MIUI 14”)以便进一步优化方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值