flutter虚拟机

Genymotion下载及安装

1 ,打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行登录操作。如果没有账号,则需要先注册。在登录界面,点击Create an account按钮打开注册界面。需要注意的是输入邮箱和密码后,系统会发送一封邮件到你邮箱,请一定要去验证。注意:一定要进行验证!!!
2,下载、安装安卓模拟器Genymotion下载地址:https://www.genymotion.com/download/
因为Genymotion运行需要VirtualBox,如果电脑中没安装过,建议选这个版本。
因为下载的安装包含有VirtualBox,所以在安装过程中会自动进行安装VirtualBox的操作界面。

在这里插入图片描述

Flutter 开发中,安卓虚拟机(Android Emulator)无法调用 HTTP 请求的问题,通常与 Android 系统的网络配置和 Flutter 的网络请求机制有关。以下是常见的排查与解决方法: ### 1. **检查网络权限** 在 Android 应用中,进行网络请求必须在 `AndroidManifest.xml` 文件中声明网络权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 如果未添加该权限,应用将无法访问网络,导致 HTTP 请求失败[^4]。 --- ### 2. **使用正确的本地 IP 地址** 在 Android 模拟器中,`127.0.0.1` 指向模拟器本身,而不是宿主机器。如果请求的目标是本地服务器(例如运行在本机的后端服务),应将 IP 地址替换为 `10.0.2.2`,这是 Android 模拟器预设的回环地址,指向宿主机器: ```dart final url = Uri.parse('http://10.0.2.2:3000/api/data'); ``` 这样可以确保请求正确地发送到宿主机器上的服务[^4]。 --- ### 3. **检查代理设置** Flutter 的网络请求默认使用系统代理设置,但在某些情况下可能未正确配置。如果使用 Wi-Fi 并设置了代理,但请求未通过代理发送,可能是由于 Flutter 使用的网络库(如 `http` 或 `dio`)没有自动遵循系统代理配置。可以通过手动设置代理来解决: ```dart import 'package:http/io_client.dart'; import 'dart:io'; final client = IOClient(HttpClient() ..findProxy = (uri) { return "PROXY 192.168.1.1:8080"; // 替换为你的代理地址 } ..badCertificateCallback = (X509Certificate cert, String host, int port) => true); final response = await client.get(Uri.parse('https://example.com')); ``` --- ### 4. **处理 HTTPS 证书问题** 如果请求的目标是 HTTPS 地址,并且使用的是自签名证书,可能会导致 SSL 握手失败。可以使用 `HttpClient` 的 `badCertificateCallback` 来忽略证书错误(仅限开发环境): ```dart final client = HttpClient() ..badCertificateCallback = (X509Certificate cert, String host, int port) => true; final request = await client.getUrl(Uri.parse('https://self-signed.badssl.com')); final response = await request.close(); ``` 请注意,这种方式仅适用于测试环境,生产环境应使用有效的证书。 --- ### 5. **使用第三方 HTTP 库(如 `dio`)** Flutter 社区提供了功能更强大的 HTTP 请求库,如 `dio`,它支持拦截器、全局配置、文件上传等功能。使用 `dio` 可以更灵活地处理网络请求: ```dart import 'package:dio/dio.dart'; final dio = Dio(); try { final response = await dio.get('https://example.com'); print(response.data); } catch (e) { print('请求失败: $e'); } ``` `dio` 提供了更丰富的配置选项,例如设置代理、超时时间等,适合复杂场景下的网络请求处理[^2]。 --- ### 6. **检查 Android 网络策略** 从 Android 9.0(API 级别 28)开始,Google 引入了更严格的网络策略,默认情况下不允许明文 HTTP 请求。如果请求的目标是 HTTP 地址,可以在 `AndroidManifest.xml` 中添加 `android:usesCleartextTraffic="true"` 来允许明文流量: ```xml <application android:usesCleartextTraffic="true" ...> </application> ``` 该设置允许应用使用 HTTP 而不是 HTTPS 进行网络通信。 --- ### 7. **调试网络请求** 可以使用抓包工具(如 Charles 或 Fiddler)来捕获 Flutter 应用的网络请求,检查请求是否正常发出、响应是否正常接收。如果请求未发出,可能是代码中存在逻辑问题;如果请求发出但未收到响应,可能是网络配置或服务器端问题[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值