0

我正在为 React Native 构建一个模块,作为其中的一部分,有一些原生 iOS 代码被包装在一个 cocoapod 中。我的工作正常,我可以安装 cocoapod 并从 RN 端查看本机类没问题。本机类之一正在尝试获取子文件夹内的本地 mp3 文件的路径proj/Audio/file.mp3。使用以下 ObjC 代码:NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"mp3" inDirectory:@"Audio"];

这正在返回nil,因此在尝试获取文件时会导致错误NSURL。我将 mp3 扩展名添加到podspec@s.source_files = "ios/**/*.{h,m,swift,mp3}"所以它正在移动文件。但是,我认为我必须丢失一些东西,因为它最终无法找到该文件。

我已经进入源 xcode 项目并将mp3文件添加到Copy files构建阶段的阶段。我还确保该文件已链接到目标。我不确定在这一点上我还可能缺少什么以使其无法找到。

4

2 回答 2

0

我知道这是一篇旧帖子,但我自己也在为此苦苦挣扎。我完全同意Artal,总结一下你需要

let bundlePath = Bundle.main.path(forResource: "Audio", ofType: "bundle");
let bundle = Bundle(path: bundlePath!)

也许守护你的道路,

于 2022-02-20T10:30:09.703 回答
0

不要将 mp3 文件放入source_files您的 podspec 中,而是尝试使用resource_bundles; 请参阅此处的文档。基本上,它允许您使用您指定的资产定义 CocoaPods 为您创建的资源包文件,例如:

s.resource_bundles = {
'Audio' => ['ios/**/*.mp3']
} 

您可以加载 CocoaPods 创建的包文件资源(NSBundle通过其名称从其 URL 创建一个对象 -Audio在上面的示例中和扩展名 - bundle),然后从该包中的资源获取路径(与您在 上使用的方法相同mainBundle) .

于 2019-12-04T08:26:28.557 回答