真机运行请求本地后端接口
由于我们的项目使用了定位相关 api,而 as 提供的模拟器的定位是国外,不能满足需求,所以我们使用了真机调试
但是真机调试在请求后端接口时,如果 ip 写 localhost,那么 axios 会报错 network error,很奇怪!猜想可能是因为 ip 写的不正确!(注意:后端配置了跨域也不行)
试了 127.0.0.1 也不行!
最终尝试了以下三种措施,成功请求,但是不知道是因为哪个配置才导致成功的:
1.adb
adb reverse
命令用于在 Android 设备和计算机之间设置端口转发。您可以在计算机的命令提示符(cmd)或终端中执行该命令。
以下是命令的格式:
adb reverse tcp:<本地端口> tcp:<设备端口>
在执行该命令之前,请确保已经将 Android 开发工具包(Android SDK)的路径添加到系统的环境变量中,或者直接在命令提示符或终端中导航到 Android SDK 的 platform-tools
目录下。
例如,在命令提示符或终端中执行以下命令:
adb reverse tcp:3000 tcp:3000
这会将本地计算机上的端口 3000 转发到连接的 Android 设备上的相同端口,这样您的 Android 应用就可以通过访问本地主机的端口来与后端进行通信。
2.android 权限配置
添加如下内容:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
3.使用电脑的局域网 ip 地址 ——> 大概率是因为这个配置!!!
注意:必须确保电脑和手机连接在同一个 wifi 下面!!!
通过 ipconfig 进行查看 ipv4 地址!
这里使用的是 ipconfig 查出来的 ipv4 地址,因为 android 真机需要通过电脑的局域网 ip 才能请求到本地后端项目,请求 localhost 不行!
特别注意:
当把 wifi 改为手机热点,电脑连接手机热点之后,电脑和手机还是相当于在一个局域网下面的
但是这个时候电脑 ip 是会变的
需要重新通过 ipconfig 获得,并重新设置!
注意:有的时候会突然不好用了,不能请求了,那么就换个网络就好了!