为 ios react-native itc deploy 加载 ios/main.bundlejs 时遇到问题

Posted

技术标签:

【中文标题】为 ios react-native itc deploy 加载 ios/main.bundlejs 时遇到问题【英文标题】:Having trouble loading ios/main.bundlejs for ios react-native itc deploy 【发布时间】:2017-07-06 16:25:52 【问题描述】:

我正在尝试为我的 ios 应用程序首次部署到 itc,该应用程序现在包含一个 react-native 视图。 我使用

创建了包
react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios

但我似乎无法弄清楚切换 jsCodeLocation 以使用新包的语法。我找到的大多数指南都在 obj-c 中,并且无法弄清楚我的命令有什么问题。当我在这里设置断点时,我发现它返回 jsCodeLocation nil。

  func loadReactNativeView () 
    //let jsCodeLocation : URL = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index.ios", fallbackResource: nil)

    let jsCodeLocation = Bundle.main.url(forResource: "main", withExtension: "jsbundle", subdirectory: "ios")

    let rootView : RCTRootView = RCTRootView(bundleURL: jsCodeLocation, moduleName: "HealthStorylines", initialProperties: [:], launchOptions: [:])
    rootView.backgroundColor = #colorLiteral(red: 0.2745098174, green: 0.4862745106, blue: 0.1411764771, alpha: 1)
    let frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height - 49)
    rootView.frame = frame
    self.view.addSubview(rootView)
  

非常感谢并需要有关如何调试的建议

【问题讨论】:

【参考方案1】:

我在 AppDelegate.swift 中使用这种方法。我知道答案可能会迟到,但对于其他到达这里的人来说

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 

  let jsCodeLocation: URL = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource:nil)
  let rootView = RCTRootView(bundleURL: jsCodeLocation, moduleName: GlobalConstants.appName, initialProperties: nil, launchOptions: launchOptions)
  let rootViewController = UIViewController()
  rootViewController.view = rootView

  self.window = UIWindow(frame: UIScreen.main.bounds)
  self.window?.rootViewController = rootViewController
  self.window?.makeKeyAndVisible()

  return true

其中 GlobalConstants.appName 是您的应用名称为“ExampleApp”的字符串

【讨论】:

以上是关于为 ios react-native itc deploy 加载 ios/main.bundlejs 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

为 iOS React-Native 项目设置 Fbsdk 框架

以真实设备为目标时,无法在 IOS 中构建 react-native

在普通系统中以 react-native 为 ios 创建发布应用程序

React-Native:错误:无法为 iOS 项目安装 CocoaPods 依赖项,这是此模板所需的

react-native中ios的TextInput下划线颜色

如何在 react-native (iOS) 中创建离散滑块?