HarmonyOS鸿蒙Next中device studio运行报错,无法获取sdk

HarmonyOS鸿蒙Next中device studio运行报错,无法获取sdk 弹窗报错信息:This project has no targetSdkVersion field configured. Configure it to ensure app compatibility。

实际上已经安装了sdk。

工程同步失败,报某一个依赖包找不到,实际不是这个原因,而是sdk找不到带来的错乱。

cke_5102.png


更多关于HarmonyOS鸿蒙Next中device studio运行报错,无法获取sdk的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

【解决方案】

当创建一个新工程,需在工程级build-profile.json5文件中配置compatibleSdkVersion、targetSdkVersion字段。compatibleSdkVersion表示应用兼容的最低版本。targetSdkVersion表示应用运行所需的目标SDK版本。当前工程只配置了compatibleSdkVersion5.0.1(13),请新增配置targetSdkVersion项且不低于api13。

更多关于HarmonyOS鸿蒙Next中device studio运行报错,无法获取sdk的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如何解决“无法访问此网站”错误

常见原因及解决方案

1. 检查网络连接

  • 确保设备已连接到互联网
  • 尝试访问其他网站,确认是否为特定网站问题
  • 重启路由器或调制解调器

2. 清除浏览器缓存和Cookie

  • 打开浏览器设置
  • 找到“隐私和安全”选项
  • 选择“清除浏览数据”
  • 勾选“缓存图像和文件”、“Cookie和其他网站数据”
  • 点击“清除数据”

3. 检查DNS设置

  • 尝试使用公共DNS服务器(如Google DNS:8.8.8.8和8.8.4.4)
  • 在操作系统网络设置中修改DNS配置

4. 禁用浏览器扩展

  • 某些扩展程序可能干扰网站访问
  • 进入浏览器扩展管理页面
  • 暂时禁用所有扩展,逐一启用以排查问题

5. 检查防火墙和安全软件

  • 确保防火墙未阻止浏览器访问网络
  • 暂时禁用安全软件进行测试(完成后请重新启用)

6. 尝试其他浏览器或设备

  • 使用不同浏览器访问同一网站
  • 在其他设备上测试网络连接

7. 网站服务器问题

高级故障排除

刷新DNS缓存

Windows系统:

  1. 以管理员身份打开命令提示符
  2. 输入命令:ipconfig /flushdns

macOS系统:

  1. 打开终端
  2. 输入命令:sudo killall -HUP mDNSResponder

重置TCP/IP协议栈

Windows系统:

  1. 以管理员身份打开命令提示符
  2. 输入命令:netsh int ip reset

检查代理设置

  • 确保浏览器未配置错误的代理服务器
  • 在浏览器设置中检查代理配置

预防措施

  • 定期更新操作系统和浏览器
  • 安装可靠的安全软件
  • 避免使用不安全的公共Wi-Fi网络
  • 定期清理浏览器缓存

如果以上方法均无效,请联系网络服务提供商或网站管理员寻求进一步帮助。

已解决,甲方的自己依赖包问题,这几天更新了包就好了。

报错的本质是 “项目配置文件中未显式声明targetSdkVersion,而非 “未安装 SDK”:

  1. targetSdkVersion是项目的核心配置,用于指定 “应用兼容的目标 SDK 版本”,工程同步时会根据该配置匹配对应的 SDK 资源、编译规则和依赖兼容性;
  2. 即使本地安装了 SDK,若项目未配置该字段,IDE(DevEco Studio/Android Studio)无法识别 “该用哪个版本的 SDK 编译”,会直接触发 “SDK 找不到” 的底层错误,进而导致 “依赖包找不到” 的连锁报错(依赖包需要 SDK 环境支撑,SDK 识别失败会让依赖解析逻辑错乱)。

简单说:“安装 SDK” 是 “有原料”,“配置targetSdkVersion” 是 “告诉 IDE 用哪个原料做饭”,缺了后者,原料再全也无法正常编译。

  1. 缺失关键配置项 项目中的 module.json5 文件未声明 targetSdkVersion 字段。该字段用于指定应用兼容的API版本,是鸿蒙应用的必要配置项。
  2. 影响范围 未配置 targetSdkVersion 将导致:
    • 应用无法通过编译
    • 弹窗等依赖API版本的功能可能无法正常工作
    • 应用在新版本系统上可能出现兼容性问题

🛠️ 解决方案 在项目的 module.json5 文件中添加 targetSdkVersion 字段,示例如下:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "MainAbility",
    "deviceTypes": ["phone", "tablet"],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [...],
    "targetSdkVersion": 20 // 根据实际需求填写版本号
  }
}

使用 Python 和 Selenium 进行 Web 自动化测试

概述

Selenium 是一个用于 Web 应用程序测试的强大工具。它提供了一套用于自动化浏览器操作的 API,支持多种编程语言,包括 Python。本文将介绍如何使用 Python 和 Selenium 进行 Web 自动化测试。

环境搭建

安装 Selenium

使用 pip 安装 Selenium:

pip install selenium

下载浏览器驱动

Selenium 需要对应的浏览器驱动来控制浏览器。以 Chrome 为例,需要下载 ChromeDriver。

  1. 访问 ChromeDriver 下载页面
  2. 下载与你的 Chrome 浏览器版本匹配的驱动
  3. 将驱动文件放在系统 PATH 目录中,或指定其路径

基本用法

启动浏览器

from selenium import webdriver

# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.example.com")

查找元素

Selenium 提供了多种查找元素的方法:

# 通过 ID 查找
element = driver.find_element_by_id("element_id")

# 通过名称查找
element = driver.find_element_by_name("element_name")

# 通过类名查找
element = driver.find_element_by_class_name("element_class")

# 通过标签名查找
element = driver.find_element_by_tag_name("tag_name")

# 通过 CSS 选择器查找
element = driver.find_element_by_css_selector("css_selector")

# 通过 XPath 查找
element = driver.find_element_by_xpath("xpath_expression")

常用操作

# 输入文本
element.send_keys("text to input")

# 点击元素
element.click()

# 获取元素文本
text = element.text

# 获取属性值
attribute = element.get_attribute("attribute_name")

# 清除输入框内容
element.clear()

高级功能

等待机制

Selenium 提供了两种等待方式:隐式等待和显式等待。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 隐式等待(全局等待)
driver.implicitly_wait(10)  # 最多等待10秒

# 显式等待(针对特定条件)
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))

处理弹窗和警告框

# 切换到警告框
alert = driver.switch_to.alert

# 获取警告框文本
alert_text = alert.text

# 接受警告框
alert.accept()

# 拒绝警告框
alert.dismiss()

执行 JavaScript

# 执行 JavaScript 代码
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

测试框架集成

使用 unittest

import unittest
from selenium import webdriver

class TestWebPage(unittest.TestCase):
    
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("https://www.example.com")
    
    def test_title(self):
        self.assertEqual(self.driver.title, "Example Domain")
    
    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

使用 pytest

import pytest
from selenium import webdriver

@pytest.fixture
def driver():
    driver = webdriver.Chrome()
    driver.get("https://www.example.com")
    yield driver
    driver.quit()

def test_page_title(driver):
    assert driver.title == "Example Domain"

最佳实践

  1. 使用 Page Object 模式:将页面元素和操作封装成类,提高代码可维护性
  2. 合理使用等待:避免使用硬性等待(time.sleep),优先使用隐式或显式等待
  3. 保持测试独立:每个测试用例应该独立运行,不依赖其他测试的结果
  4. 处理异常:合理处理可能出现的异常情况,使测试更加健壮
  5. 清理资源:测试结束后及时关闭浏览器,释放资源

总结

Python 和 Selenium 组合提供了一个强大的 Web 自动化测试解决方案。通过掌握基本元素操作、等待机制和测试框架集成,可以构建高效、可靠的自动化测试脚本。随着项目复杂度的增加,建议采用 Page Object 模式等最佳实践来保持代码的可维护性。

不是 ,是让你在源码工程配置项(build-profile.json5文件)中补充targetSdkVersion。

targetSdkVersion是能安装的最新版本,compatibleSdkVersion是能安装的最旧版本(用来兼容老版本)

例如:接口A在SDK版本5.0.2(14)产生行为变更并进行了版本隔离,应用升级targetSDKVersion≥5.0.2(14)并适配了新版本行为, compatibleSdkVersion还保持设置为5.0.1(13), 则若应用分发到低版本设备5.0.1(13)上,需保证该应用在低版本设备能够兼容运行正常(如下图所示)。

previewableImage

可以参考 应用升级targetSDKVersion兼容低版本指导-应用开发中的兼容性场景开发指导-应用兼容性说明

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

如何解决“无法访问此网站”错误

当您尝试访问某个网站时,可能会遇到“无法访问此网站”的错误。这个错误表明您的浏览器无法连接到目标服务器。以下是解决此问题的详细步骤。

1. 检查网络连接

首先,确认您的设备已连接到互联网。

  • 检查其他网站:尝试访问其他网站(如 google.com)。如果其他网站可以正常访问,则问题可能出在您尝试访问的特定网站上。
  • 检查Wi-Fi或有线连接:确保您的设备已正确连接到网络。如果是Wi-Fi,请检查信号强度;如果是有线连接,请检查网线是否插好。
  • 尝试其他设备:使用同一网络下的其他设备(如手机)尝试访问该网站,以判断是单台设备的问题还是整个网络的问题。

2. 重启路由器和调制解调器

网络设备长时间运行后可能出现临时故障。

  1. 关闭您的路由器和调制解调器(光猫)。
  2. 等待至少30秒。
  3. 先打开调制解调器,等待所有指示灯稳定。
  4. 再打开路由器,等待其完全启动。
  5. 重新尝试访问网站。

3. 清除浏览器缓存和Cookie

过时或损坏的浏览器缓存数据可能导致连接问题。

  • Google Chrome:点击右上角三个点 > 更多工具 > 清除浏览数据。选择时间范围(建议“全部时间”),勾选“Cookie及其他网站数据”和“缓存的图片和文件”,然后点击“清除数据”。
  • 其他浏览器:在设置中查找“隐私和安全”或“历史记录”选项,执行类似操作。

4. 检查防火墙和安全软件

有时,防火墙或安全软件会错误地将网站阻止。

  • 暂时禁用防火墙/安全软件:尝试暂时关闭电脑上的防火墙或第三方杀毒软件,然后再次访问网站。(注意:测试后请记得重新启用,以保持系统安全)
  • 检查规则设置:确保您的安全软件没有将目标网站或浏览器列入黑名单。

5. 刷新DNS缓存

本地DNS缓存记录可能已过时,导致域名解析错误。

  • Windows
    1. 以管理员身份打开“命令提示符”。
    2. 输入命令 ipconfig /flushdns 并按回车。
    3. 看到“已成功刷新 DNS 解析缓存”的提示即可。
  • macOS
    1. 打开“终端”。
    2. 输入命令 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder 并按回车,输入密码确认。

6. 更改DNS服务器

您的ISP提供的DNS服务器可能响应缓慢或出现问题。可以尝试切换到公共DNS服务器,如Google DNS或Cloudflare DNS。

  • Google DNS8.8.8.88.8.4.4
  • Cloudflare DNS1.1.1.11.0.0.1

更改方法(Windows示例)

  1. 打开“控制面板” > 网络和 Internet > 网络和共享中心
  2. 点击当前连接的网络名称。
  3. 点击“属性” > 双击“Internet 协议版本 4 (TCP/IPv4)”。
  4. 选择“使用下面的DNS服务器地址”,填入首选和备用DNS地址,点击“确定”。

7. 检查代理设置

不正确的代理设置会干扰网络连接。

  • 浏览器设置:在浏览器设置中搜索“代理”,确保没有启用不必要或错误的代理服务器。
  • 系统设置(Windows):打开“设置” > 网络和 Internet > 代理,检查自动或手动代理设置。

8. 联系网站管理员或您的ISP

如果以上方法均无效,问题可能不在您这边。

  • 网站问题:可能是网站服务器宕机或正在维护。您可以稍后再试,或通过第三方工具(如 isitdownrightnow.com)检查网站状态。
  • ISP问题:可能是您的互联网服务提供商(ISP)出现了区域性故障或路由问题。请联系他们进行确认。

通过系统地尝试以上步骤,您应该能够诊断并解决大多数“无法访问此网站”的错误。

在HarmonyOS Next中,Device Studio运行报错“无法获取SDK”通常是由于SDK路径配置问题或SDK未正确安装导致。请检查DevEco Studio的SDK Manager,确保已安装对应版本的HarmonyOS SDK,并确认环境变量或项目设置中的SDK路径指向正确位置。

这个报错通常是因为项目配置中缺少 targetSdkVersion 字段,即使已安装 SDK,IDE 也无法正确识别。请按以下步骤排查:

  1. 检查 build-profile.json5 文件
    在项目根目录的 build-profile.json5 中,确认 targetSdkVersion 已配置。示例:

    "targetSdkVersion": 12
    
  2. 验证 SDK 路径
    在 Device Studio 中打开 Settings > HarmonyOS SDK,确认 SDK 路径正确且已安装对应 API 版本的 SDK。

  3. 清理并重新同步项目

    • 删除项目根目录的 .devecobuild 等缓存文件夹。
    • 在终端执行 hpm clean 或通过 IDE 的 Build > Clean Project 清理。
    • 点击 Sync Project 重新同步依赖。
  4. 检查网络与依赖源
    若同步时提示依赖包找不到,可能是网络问题或依赖源未配置。在 oh-package.json5 中确认依赖包名称和版本正确,或尝试切换网络环境。

  5. 更新 IDE 和 SDK
    确保使用最新版本的 Device Studio 和 HarmonyOS Next SDK,避免版本兼容性问题。

若以上步骤仍无法解决,请提供 build-profile.json5oh-package.json5 文件内容以便进一步定位。

回到顶部