OpenHarmony开发者论坛

标题: OpenHarmony 资源管理获取raw目录下文件的绝对路径方法 [打印本页]

作者: leohe    时间: 2024-1-10 10:38
标题: OpenHarmony 资源管理获取raw目录下文件的绝对路径方法
[md]# 背景

1. OpenHarmony4.0

## 需求

在src/main/resources/rawfile/目录下存有一个 broadcastpause720.h264文件.  在NDK层上需要以二进制的方式访问打开该文件. 首先需要获取该文件的绝对路径

官方提供的接口

```
$rawfile('broadcastpause720.h264')
```

仅能获得一个对象. 无法在APP运行时获取到该文件的绝对路径

## 问题

如何获取APP资源rawfile的绝对路径提供给NDK层访问?
[/md]
作者: 深开鸿_王石    时间: 2024-1-10 16:28
应用的安装路径是:/data/app/el1/bundle/public/<PACKAGENAME>,然后资源路径是里面的entry/resources/rawfile/,有安全要求,所以不能直接访问;
应用访问,接口就是context.resourceManager.getRawFd("test.log"),或context.resourceManager.getRawFileDescriptor("test.log"),

能得到文件fd,通过fd可以操作文件
作者: mean    时间: 2024-1-10 18:59
包管理子系统不支持按路径读取entry.har中的文件(任意路径都不行)
作者: leohe    时间: 2024-1-11 15:09
回复 深开鸿_王石: arkts层和native 均有接口获取fd句柄.  
这两个层面上分别调用哪个接口从fd里面读取1024大小的buff?
作者: 深开鸿_王石    时间: 2024-1-11 18:14
回复 leohe: arkts层可以用fileio,native就用stdio里的方法,read,lseek这样
作者: jyjy    时间: 2024-2-6 11:29
回复 深开鸿_王石: 大佬你好 想问一下 native开发 /dev/vendor_storage设备文件要怎么访问?
使用open()接口打开,报错permission denied,应用配置了system_core、hos_system_app权限,用chmod修改了文件读写权限,参考文档使用mount也是没有权限。
还是这个路径需要怎么映射的方式读取?
作者: 深开鸿_王石    时间: 2024-2-6 15:47
回复 jyjy: selinux的权限关了吗?
作者: jyjy    时间: 2024-2-6 18:17
回复 深开鸿_王石: 是这个原因, selinux改成Permissive模式就可以了。
感谢大佬。
作者: zhikai    时间: 2024-9-12 14:13
回复 深开鸿_王石: 现在比较尴尬的是类似Seetaface2这种库提供预训练的模型,他提供的接口在使用的过程中我是需要通过路径传参,然后让API去进行调用,但是API里面本身并不会写相关NDK的rawfile访问的方法
作者: 深开鸿_王石    时间: 2024-9-14 16:20
回复 zhikai: 那就还有个法子,就是把rawfile拷贝到你自己包路径下,然后再通过路径传参




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5