HarmonyOS鸿蒙Next中模拟器网络权限

HarmonyOS鸿蒙Next中模拟器网络权限 各位老师好,我目前正在进行一个简单的网络的联通的测试。目前是previewer可以正常连接后端,但是模拟器无法连接后端。配置了权限也没用。

项目的架构参照的是三层架构product,feature,common。(应用架构设计基础——三层架构-HarmonyOS应用开发快速入门-Codelabs-华为开发者联盟

已经在product中default的module.json5中添加了网络权限

但是仍出问题,下图是在模拟器中的画面

下图是预览其中的画面

由此可见不是后端的问题

2 回复

各位老师,解决了已经,参见下方deepseek回答

在鸿蒙(HarmonyOS)开发中,当你在模拟器中访问本地计算机上运行的Spring Boot后端服务时,使用10.0.2.2作为IP地址是Android/鸿蒙模拟器的特殊设计,原因如下:


1. 模拟器的网络隔离性

模拟器本身运行在一个虚拟的独立网络中,与你的开发机(本地计算机)不在同一个物理网络。为了安全性和避免冲突,模拟器不能直接使用localhost127.0.0.1访问开发机的服务(因为这两个地址指向模拟器自身)。


2. 模拟器的特殊IP映射

Android/鸿蒙模拟器预定义了一些别名IP,用于访问主机(开发机)的不同服务:

  • 10.0.2.2 → 指向开发机的本地环回地址(127.0.0.1

    这是你访问开发机上运行的Spring Boot后端的关键地址。

  • 10.0.2.1 → 指向开发机的网关/路由器

  • 10.0.2.3 → 模拟器的第一个DNS服务器


3. 为什么不能直接用localhost127.0.0.1

  • 在模拟器中,localhost127.0.0.1指向的是模拟器自身的虚拟系统,而不是你的开发机。

  • 如果你在代码中写[http://localhost:9090/api/test](http://localhost:9090/api/test),鸿蒙应用会尝试访问模拟器内部的9090端口(而不是你电脑上运行的Spring Boot服务),导致连接失败。


4. 真机测试时的区别

当你在真实鸿蒙设备上测试时:

  • 必须将10.0.2.2改为开发机的实际局域网IP(如192.168.x.x)。
  • 确保手机和开发机在同一个局域网内,且防火墙允许9090端口的入站连接。

5. 完整示例代码调整

// 根据运行环境动态设置IP
let baseUrl: string;
if (/* 判断是否为模拟器 */) {
  baseUrl = '[http://10.0.2.2:9090/api/test](http://10.0.2.2:9090/api/test)'; // 模拟器
} else {
  baseUrl = '[http://192.168.1.100:9090/api/test](http://192.168.1.100:9090/api/test)'; // 真机,替换为你的电脑IP
}

6. 验证步骤

  1. 确保Spring Boot后端运行

    在开发机终端执行netstat -ano | findstr 9090(Windows)或lsof -i :9090(Mac/Linux),确认端口监听正常。

  2. 在模拟器中测试

    直接使用10.0.2.2访问,如果返回数据成功,说明配置正确。

  3. 真机测试

    • 在开发机命令行执行ipconfig(Windows)或ifconfig(Mac/Linux)获取本地IP。
    • 将代码中的IP改为该地址,并确保手机和电脑在同一Wi-Fi下。

7. 常见问题排查

  • 连接失败:检查开发机防火墙是否放行了9090端口。
  • 跨域问题:虽然你的Spring Boot已配置@CrossOrigin,但如果仍有问题,可尝试在后端显式设置allowedMethodsallowedHeaders
  • HTTPS:如果后端是HTTPS,鸿蒙应用需配置网络安全策略(networkSecurityConfig)。

通过这种设计,模拟器可以安全、方便地访问开发机上的本地服务,而无需复杂的网络配置。

更多关于HarmonyOS鸿蒙Next中模拟器网络权限的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,模拟器的网络权限管理主要通过配置文件进行设置。开发者需要在config.json文件中明确声明应用所需的网络权限,例如访问互联网或特定网络接口。具体权限包括ohos.permission.INTERNET等。配置完成后,模拟器会根据这些权限限制或允许应用的网络访问行为,确保应用在开发阶段的网络功能测试符合实际运行环境的要求。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!