【问题标题】:React Native Module, Cocoapod file not foundReact Native 模块,找不到 Cocoapod 文件
【发布时间】:2019-12-02 21:00:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios react-native cocoapods react-native-ios react-native-native-module


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      也许会守护你的道路,

      【讨论】:

        猜你喜欢
        • 2019-09-06
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2023-01-18
        • 2016-10-27
        • 2019-04-03
        • 1970-01-01
        相关资源
        最近更新 更多