如何通过 Xcode 将 React Native iOS 应用程序构建到设备?

Posted

技术标签:

【中文标题】如何通过 Xcode 将 React Native iOS 应用程序构建到设备?【英文标题】:How do I build React Native iOS app to device through Xcode? 【发布时间】:2015-06-01 19:59:59 【问题描述】:

我尝试将AwesomeProject 应用程序构建到设备。构建成功并显示初始屏幕,但随后我看到红色的“无法连接到开发服务器”屏幕。它说“确保节点服务器正在运行 - 从 React root 运行 'npm start'。”

看起来节点服务器已经在运行,因为当我执行npm start 时,我收到一条EADDRINUSE 消息,表示该端口已在使用中。

【问题讨论】:

我想知道它是否与应用程序在哪里寻找服务器有关。如果它在模拟器中运行(这是它在演示中所做的),那么服务器将是localhost。但由于这是在不同的设备上运行的,所以 'localhost' 不会是寻找服务器的地方。我看到localhost 硬编码在packager.js 脚本中。 【参考方案1】:

AppDelegate.m

To run on device, change localhost to the IP address of your computer, and make sure your computer and ios device are on the same Wi-Fi network.

我在 react-native github 问题上找到了 related issue。

在没有服务器的情况下运行应用程序的说明:https://github.com/facebook/react-native/issues/240

【讨论】:

【参考方案2】:
    查看您的 AppDelegate.m 文件 找到“OPTION 1”和“OPTION 2”注释块。它们位于“@implementation AppDelegate”行之后。 确保块中只有最后一行被取消注释。 对于您选择的选项,请务必按照有关如何加载文件的说明进行操作。

另外请注意,您的电脑和手机必须连接到同一个 wifi 网络。

根据AppDelegate.m中的表扬:

要在设备上运行,请将localhost 更改为您计算机的 IP 地址,并确保您的计算机和 iOS 设备在同一个 Wi-Fi 网络上。

【讨论】:

【参考方案3】:

从设备访问开发服务器 您可以使用开发服务器在设备上快速迭代。为此,您的笔记本电脑和手机必须在同一个 wifi 网络上。

    打开 iOS/AppDelegate.m 将 URL 中的 IP 从 localhost 更改为笔记本电脑的 IP 在 Xcode 中选择您的手机作为构建目标,然后按“构建并运行”

ps:http://facebook.github.io/react-native/docs/runningondevice.html#content

【讨论】:

有没有办法检测出楼机的ip地址自动使用,不用每次都手动设置?【参考方案4】:

另一个潜在问题(这发生在我身上):即使您进行了所有必要的代码更改(参见http://moduscreate.com/automated-ip-configuration-for-react-native-development/ 以获得良好的演练)、启动服务器等,它仍然可能因为@987654322 而失败@。您需要将您的 IP 地址添加到应用程序的 Info.plist 文件中的 NSExceptionDomains 列表中,或者完全禁用 ATS(不鼓励 - 阅读上面的文章以了解原因)。

示例条目:

  <key>NSAppTransportSecurity</key>
  <dict>
    <key>NSExceptionDomains</key>
    <dict>
      <key>YOUR-IP-HERE</key>
      <dict>
        <key>NSTemporaryExceptionAllowsInsecureHTTPSLoads</key>
        <false/>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>1.0</string>
        <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
        <false/>
      </dict>
    </dict>
  </dict>

【讨论】:

对我来说似乎不是解决方案 @jacks205 解决什么问题?【参考方案5】:

这应该不再是问题。您应该能够关注文档,其中说明了以下内容:

    通过 USB 连接您的设备 将您的设备连接到与运行 Xcode 的笔记本电脑相同的 wifi 网络 在 Xcode 界面中单击 build in run(左上角的“播放”按钮)并选择您的设备。

【讨论】:

仍然是个大问题

以上是关于如何通过 Xcode 将 React Native iOS 应用程序构建到设备?的主要内容,如果未能解决你的问题,请参考以下文章

升级mac os和升级xcode后如何运行`npm react-native run-ios`?

Xcode 10 - 无法构建 React Native 应用程序

如何使用 Xcode 12 Beta 4 构建 React-Native 项目?

将 XCode 更新为 XCode 12.2 / React Native 0.63.2 构建失败

对于 React-Native iOS XCode 版本 12.5 的旧项目,构建失败

如何使用 react-native-camera 录制视频