HarmonyOS鸿蒙Next新手程序员关于资源路径的疑惑

HarmonyOS鸿蒙Next新手程序员关于资源路径的疑惑 我的测试项目在使用image进行路径选择的时候,选择了相对路径的写法:

img文件夹在src根目录下

Image(`img/Test_img/Ruiwen_test_img/Ruiwen_test_img_question/Ruiwen_test_question_${[this.NowId]}.png`)

该代码在预览器运行的时候可以执行,但在我使用真机模拟的时候却无法显示图片。使用通过使用资源加载符"$r(“app.media.???”)"的文件才能出现。

官方目录这么写的:

我询问ai猜测可能是项目版本的问题,我的项目使用的是5.1.1(19),因为怕用最新版本有更多bug。

问题来了,我在media下试图新建文件夹对文件归类,但编译环境会报错;可我的项目内有极多图片想要使用本地资源加载,总不可能全部放在media或base目录下面吧?


更多关于HarmonyOS鸿蒙Next新手程序员关于资源路径的疑惑的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

还是我自己找人解决了:

"copyCodeResource": {
  "enable": true
}

该字段中将enable字段修改为true即可

更多关于HarmonyOS鸿蒙Next新手程序员关于资源路径的疑惑的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile#table1476161719356

copyCodeResource 是否将src/main/ets目录下的资源文件(.ets/.ts/.js以外的其他文件)打包到产物中。

从DevEco Studio 6.0.0 Beta2版本开始,新建工程或模块时,默认配置enable字段并且值为false,即默认不打包ets目录下的资源文件。

好的开发者,后续有任何问题欢迎您随时提问~

您好,目前建议使用6.0.0 API20及以上进行开发,

您好,我已经试着在项目结构里的兼容SDK版本设置切换了版本到6.0.1,但没有改变

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

需要下载最新正式版DevEco Studio配套使用开发

您的问题可以参考下多设备资源文件-多设备界面开发-一次开发,多端部署 - 华为HarmonyOS开发者

在HarmonyOS Next中,资源路径遵循资源限定符目录结构(如resources/base/media)。通过$r('app.media.icon')引用资源表ID,或使用$rawfile('filename.png')引用rawfile目录下的文件。资源ID自动生成于R.类中,路径不含扩展名。确保资源位于正确限定符目录下。

在HarmonyOS Next中,应用资源的访问必须遵循资源管理规范。预览器允许相对路径是一种开发便利,但真机运行时不支持以 img/... 方式直接访问本地文件,因为这些文件并未按照资源规则打包进应用。

正确做法:

  • 资源统一放入 resources/rawfile 目录,rawfile 支持任意子文件夹,正是你需要的归类方案。
  • 访问时使用全局方法 $rawfile('子目录/文件名.png')
Image($rawfile(`img/Test_img/Ruiwen_test_img/Ruiwen_test_img_question/Ruiwen_test_question_${this.NowId}.png`))
  • media 目录确实不允许嵌套子文件夹,适合无需分类的小量资源;大量图片归类请使用 rawfile

注意:
$r("app.media.xxx") 对应 media 目录下的文件,而 $rawfile 用于 rawfile 目录下的文件。两者不可混用,且 rawfile 下的文件打包后会保持原始路径和文件名,支持动态拼接。

回到顶部