【问题标题】:Adding a resource file to iOS in a native react native module在原生反应原生模块中向 iOS 添加资源文件
【发布时间】:2018-11-11 20:27:15
【问题描述】:

我正在开发本机反应本机模块,我需要一个 JSON 资源文件。我无法弄清楚如何使这个文件可用于 iOS 端,以便在模块中进行单元测试或在为 react 本机应用程序提供服务时使用。

我一直在尝试将文件放入模块 ios 文件夹根级别的文件夹(ResourcesSupportFiles 文件夹名称没有区别)。当我将它拖到 XCode (9.3.1) 项目导航器时,它被添加到模块的“测试”目标(乐高积木图标)中,位于 Build Phases --> Copy Bundle Resources 下。我还尝试将其添加到Build Phases --> Copy Files 下的真正模块构建目标(带有外观图标的目标)。

使用单元测试运行NSLog(@"%@", [[NSBundle mainBundle] bundlePath]); 我得到了一条路径: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents

我的文件和文件夹都不会传输到该路径。如果我手动将文件复制到那里,它会从我的代码中毫无问题地打开(从mainBundle 访问,但这不是一个可持续的解决方案。

我想知道资源文件是否只会在完整构建操作期间复制到目标?该模块为单元测试成功构建,但尚未定义完整构建,因为该模块不打算自行运行。我还尝试构建我的测试应用程序,该应用程序运行模块,但也无法在任何构建结果中找到该文件。

总而言之,这应该是微不足道的(在 Android 端也是如此)。我错过了什么?

【问题讨论】:

  • 在没有真正解决方案的情况下,我将 2M 的 JSON 转换为字符串常量。不完全是我正在寻找的东西,但可以完成这项工作。如果有人知道如何捆绑它,我仍然更喜欢从资源文件中加载。
  • 我也有同样的问题,有人有答案吗?如果我弄清楚了,我会在这里发布解决方案。我的资源文件是 xml 文件,但除此之外,这完全是我迄今为止尝试使用捆绑包但没有运气的问题。

标签: ios objective-c xcode react-native


【解决方案1】:

我将我的资源文件添加到我的 .podspec 文件中

s.resource = "ios/models/de/myfile.abc"

完整的 .podspec:

require "json"

package = JSON.parse(File.read(File.join(__dir__, "package.json")))

Pod::Spec.new do |s|
  s.name         = package["name"]
  s.version      = package["version"]
  s.summary      = "SUMMARY"
  s.homepage     = "HOMEPAGE"
  s.license      = package["license"]
  s.authors      = package["author"]
  s.platforms    = { :ios => "11.0" }

  s.source       = { :git => "myGitUrl", :tag => "v#{s.version}" }
  s.source_files = "ios/**/*.{h,m,swift}"

  s.swift_version = "5.0"

  s.dependency "React"
  s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
  s.resource = "ios/models/de/myfile.abc"
end

您可以通过以下方式获取 Swift 5 中的文件路径:

let path: String = Bundle.main.path(forResource: "myfile", ofType: "abc")!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 2020-03-02
    • 2016-10-23
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    相关资源
    最近更新 更多