为物理 iOS 设备构建 React Native 应用程序时,热代码重载不起作用

问题描述 投票:0回答:2

如标题中所述,当我为通过 USB-C 插入的 iOS 物理设备构建应用程序时,HCR 不起作用。但是,它确实适用于 Android 物理设备或 iOS/Android 模拟器。问题似乎是 Metro Bundler 未连接到设备。我确保该设备连接到与运行构建命令的 MacBook 相同的 Wi-Fi 网络。

该项目使用 RN 0.69.9(我知道其中包括 React-Codegen Pod 的修复),并且我在计算机上安装了 Xcode 14.3 (14E222b)。 HCR 工作正常,直到最近更新到 Xcode 14.3 (14E222b) 以及新的 Xcode 命令行工具。不幸的是,我无法回滚到 Xcode 的先前版本,我必须坚持使用这个版本。我正在使用 ios-deploy v1.12.1(通过brew 安装),并且我还更新了 frameworks.sh 以使用

source="$(readlink -f "${source}")"

我注意到,当我为 iOS 物理设备构建应用程序时,我在终端中收到以下警告(执行

react-native run-ios --device
并完成构建后,它们会在设备上安装应用程序之前出现):

xcodebuild[10046:322251] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
xcodebuild[10046:322374] Requested but did not find extension point with identifier Xcode.InterfaceBuilderBuildSupport.PlatformDefinition

Metro Bundler 在按“R”时不会重新加载应用程序,当我在项目中应用更改时也不会重新加载应用程序。

如果您能提供任何帮助,我们将不胜感激。

我尝试了不同的 Podfile 更改(例如将 SWIFT_VERSION 更改为 5.0),但它们根本没有帮助。另外,检查了IP:PORT以确保一切正常。

ios xcode react-native metro-bundler
2个回答
0
投票

首先确保您已经在计算机上完成了 React Native 环境的设置,请转到此链接并按照所有步骤设置 RN 环境。

第二:: 您是否已将开发团队添加到您的 Xcode > 目标 > 签名和功能中。 注意:如果您的 Xcode 中没有添加或没有任何开发团队,您将无法在物理设备中运行您的应用程序。

然后,如果环境设置完成,请执行以下操作

  1. 在 xcode 中打开
    your_project.xcworkspace
    文件
  2. 使用
    Command + Shift + K
  3. 进行干净构建
  4. 清除派生数据(按
    Command + ,
    然后转到位置选项卡,然后单击派生数据路径上的箭头图标并将其删除)
  5. 现在将您的设备连接到系统并允许系统(如果弹出)
  6. 在模拟器和设备列表中找到您的设备名称并选择它
  7. 现在使用
    Command + R
  8. 运行您的构建

确保在执行这些步骤之前重新安装了 Pod


0
投票

就我而言,我的 iOS 应用程序不允许向我的笔记本电脑发送

http
请求。因此,RN 应用程序无法与 Metro 通信,从而阻止了“热重载”功能。我修复了它,添加了ios/Info.plist
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

请记住,此选项允许与您的应用程序进行任何连接,因此不应在生产中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.