我正在为React Native构建一个模块,作为其中的一部分,cocoapod中包装了一些本地iOS代码。我的工作正常,可以安装cocoapod并从RN端查看本机类没有问题。一种本机类正在尝试获取子文件夹proj/Audio/file.mp3
内的本地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
阶段。我还确保该文件已链接到目标。我不确定在这一点上我还能缺少什么,因为找不到它。
答案 0 :(得分:0)
不要将mp3文件放在podspec的source_files
中,而是尝试使用resource_bundles
;请参阅文档here。基本上,您可以使用指定的资产来定义CocoaPods为您创建的资源包文件,例如:
s.resource_bundles = {
'Audio' => ['ios/**/*.mp3']
}
您可以加载CocoaPods创建的捆绑文件资源(在上面的示例中,通过其名称-NSBundle
和扩展名-Audio
从其URL创建bundle
对象),然后从此包中的资源获取路径(与您在mainBundle
上使用的方法相同)。