开启生长之旅!这是我参加「日新计划 2 月更文应战」的第 20 天,点击检查活动概况

前言

咱们一般调试都是运用数据线去衔接手机去调试,买过新机子的都知道,一开始是紧的,可是常常插拔之后就变松了,你们懂的,这就导致衔接的时候会常常松动断开衔接。就算不会,咱们常常这样插拔数据线也是十分不好的。当然如果你说这是公司的测试机你无所谓,那当我没说。

其它方法衔接设备

Android11之后,AS供给了咱们其它衔接手机的方法:pair new devices ovver Wi-Fi

便是你在连同一个wifi(局域网)的情况下,手机设置那有个扫二维码衔接,只需要扫二维码就能衔接上设备,就无需运用数据线。

Android连接设备,懂?

Android连接设备,懂?

可是我尝试了没办法连得上,不知道是机型问题仍是什么问题。无所谓,咱们一般都能够运用adb指令去衔接,这不比你扫二维码更快?其实上面那种方法内部也是这样连的。

直接 adb connect 设备ID:端口号, 比方我的IP是192.168.1.1,我的端口是7654,那我直接在指令窗口中输入adb connect 192.168.1.1:7654就能衔接了,不必连数据线输,直接在同一个wifi的情况下就行。

可是其实会有个问题,便是设备的端口它其实一向会变,所以需要给设备设置一个固定的端口,这时候就需要连手机然后在指令窗口输入 adb tcpip 端口号,比方我自己便是输入adb tcpip 7777,之后就能够断开数据线了,然后输入adb connect 192.168.1.1:7777就能够了,但其实ip也会或许改变,比方你关掉路由器重启等,这时候依照这个流程再来一遍就行,一般这种场景呈现很少。

Android连接设备,懂?

长途设备衔接

你以为事情到这里就完毕了?那我就没必要写这篇文章,由于上面的操作很根底,说白了便是废话,我写这篇文章的契机是我看到了一篇文章。 /post/703838…

长途衔接设备,这就有意思了,我之前都没考虑过这个方向。那既然发现了,那就有必要来和大伙好好议论这事,怎样长途衔接设备。咱们上面进行的操作都是在同个wifi的环境下,同个局域网的环境下,同个内网的环境下去操作的。但如果我运用家里的电脑,怎样去衔接公司的设备,它们处于不同的网络环境中,那又该怎么衔接上。

一般咱们会在什么场景下用到这种操作呢:
(1)上面所说的,我在家里,可是我的设备在公司。
(2)我运用云机,有许多渠道会供给云机来正常测算,而咱们想更方便的抓取日志。
(3)给客户的设备抓日志,有的人觉得这不或许,客户不会开开发者形式给你,更不会乖乖的依照你那麻烦的过程合作你去调试。如果你只想到这层,阐明你经历的还不行,2C确实是这样没错,那你有没有考虑过2B的情况。

那么不在同一个内网的情况下要怎么去衔接设备?

我搜集了一些大佬的做法,能够来看看它们怎样做。
(1)/post/703838… 这个大佬提到一个概念:内网穿透
(2)/post/719804… 这个大佬提到一个概念:虚拟局域网

我对网络工程相关的知识了解不是很深,所以不清楚的东西我也不敢去说,可是既然大佬们都有明确提出了这些思路,感兴趣的能够从这些方向入手去检查。

当然我觉得要这个“长途设备衔接”的效果要完成,我觉得不是单靠我一个Android开发工程师能去完成的,当然还要合作其它网络工程相关的人。

我是这么想的,在内网中是能直接衔接的,在外网中是衔接不上的。内网IP外网IP这种网络工程的知识我就不献丑多说了,总归,依照这个思路,我就想如果把两端都放在同一个网络环境中,那就能够直连续。

所以我想到了一个类似于这样的场景的一个东西:VPN ,那我觉得,我电脑在家里,我的终端设备在公司,我要把家里的网络放到和公司同一个网络环境下(由于网络知识不深,所以讲得或许不是那么正确),是不是就能链上了。所以我只需要用家里的电脑连公司的VPN,就能通过adb连上公司的终端设备。

那假设设备也不在公司呢?,假设设备被其他人带回家了。那同理电脑和终端设备都连VPN,行不行?

我假设能连上,还有一个问题便是,你看不到手机的屏幕,这时候就需要有个投屏的软件

scrcpy了解下:github.com/Genymobile/…

运用scrcpy后咱们就能在连上设备的情况下把手机屏幕投到电脑上,例如这样的效果:

Android连接设备,懂?