Skip to content

真机运行请求本地后端接口

由于我们的项目使用了定位相关 api,而 as 提供的模拟器的定位是国外,不能满足需求,所以我们使用了真机调试

但是真机调试在请求后端接口时,如果 ip 写 localhost,那么 axios 会报错 network error,很奇怪!猜想可能是因为 ip 写的不正确!(注意:后端配置了跨域也不行)

试了 127.0.0.1 也不行!

最终尝试了以下三种措施,成功请求,但是不知道是因为哪个配置才导致成功的:

1.adb

adb reverse 命令用于在 Android 设备和计算机之间设置端口转发。您可以在计算机的命令提示符(cmd)或终端中执行该命令。

以下是命令的格式:

bash
adb reverse tcp:<本地端> tcp:<设备端>

在执行该命令之前,请确保已经将 Android 开发工具包(Android SDK)的路径添加到系统的环境变量中,或者直接在命令提示符或终端中导航到 Android SDK 的 platform-tools 目录下。

例如,在命令提示符或终端中执行以下命令:

bash
adb reverse tcp:3000 tcp:3000

这会将本地计算机上的端口 3000 转发到连接的 Android 设备上的相同端口,这样您的 Android 应用就可以通过访问本地主机的端口来与后端进行通信。

2.android 权限配置

添加如下内容:

bash
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

android:usesCleartextTraffic="true"

image-20240319215247684

3.使用电脑的局域网 ip 地址 ——> 大概率是因为这个配置!!!

注意:必须确保电脑和手机连接在同一个 wifi 下面!!!

通过 ipconfig 进行查看 ipv4 地址!

image-20240319215428446

这里使用的是 ipconfig 查出来的 ipv4 地址,因为 android 真机需要通过电脑的局域网 ip 才能请求到本地后端项目,请求 localhost 不行!

特别注意:

当把 wifi 改为手机热点,电脑连接手机热点之后,电脑和手机还是相当于在一个局域网下面的

但是这个时候电脑 ip 是会变的

需要重新通过 ipconfig 获得,并重新设置!

注意:有的时候会突然不好用了,不能请求了,那么就换个网络就好了!