最近在开发安卓应用的时候,自以为是需要通过连接到同一个网络下,才能够进行debug调试,但现实就是啪啪打脸,只能是自己年少不自知,在同事老大哥的指导下,学习到了adb reverse tcp:8081 tcp:8081命令。

1.作用
  • adb reverse tcp:8081 tcp:8081

这条命令的意思是,Android允许我们通过ADB,把Android上的某个端口映射到电脑(adb forward),或者把电脑的某个端口映射到Android系统(adb reverse),在这里假设电脑上开启的服务,监听的端口为8081。Android手机通过USB连接电脑后,在终端直接执行 adb reverse tcp:8081 tcp:8081,然后在手机中访问127.0.0.1:8081,就可以访问到电脑上启动的服务了。

但是心中要牢记:

  • 1.必须是在连接数据线usb的前提下才能使用该方案进行代码调试。
  • 2.(Android 5.0 及以上)使用 adb reverse 命令,这个选项只能在 5.0 以上版本(API 21+)的安卓设备上使用。
2.其他属性及延伸学习

对此,我在终端继续尝试了下,看看该命令还有其他哪些用法,于是我便按照我前前同事教我的Linux大师疑难问题解决大法,执行adb --help命令,结果如下:

android adb tcp源码 adb reverse tcp:8081 tcp:8081_android adb tcp源码


然后,我们就可以看到reverse的其他用法

  • reverse --list list all reverse socket connections from device
  • reverse [–no-rebind] REMOTE LOCAL
    reverse socket connection using:
    tcp: ( may be “tcp:0” to pick any open port)
    localabstract:
    localreserved:
    localfilesystem:
  • reverse --remove REMOTE remove specific reverse socket connection
  • reverse --remove-all remove all reverse socket connections from device

后面,我们就可以愉快的使用该命令做各种访问本地电脑的操作了。

最后,我之前转载过一篇【adb常用命令总结】,这里对adb进行了详细的说明,有更多需求的可以戳进去看看哈。

3.通过网络ip地址映射

当然,我们也可以采用网络地址映射访问,此时就不需要连接USB数据线了

  1. 首先确保你的电脑和手机设备在同一个 Wi-Fi 环境下或者将自己metro服务映射到公网。
  2. 在设备上运行你的 React Native 应用。和打开其它 App 一样操作。
  3. 你应该会看到一个“红屏”错误提示。这是正常的,下面的步骤会解决这个报错。
  4. 摇晃设备,可以打开开发者菜单。
  5. 点击Dev Settings -> Debug server host for device。
  6. 输入你电脑的 IP 地址和端口号(譬如 10.0.1.1:8081)。在 Mac 上,你可以在系统设置/网络里找查询你的 IP 地址。在 Windows 上,打开命令提示符并输入ipconfig来查询你的 IP 地址。在 Linux 上你可以在终端中输入ifconfig来查询你的 IP 地址。
  7. 回到开发者菜单然后选择Reload JS。

你现在可以从开发者菜单启用实时重新加载。只要你的 JavaScript 代码发生更改,应用就会重新加载。