如标题中所述,当我为通过 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以确保一切正常。
首先确保您已经在计算机上完成了 React Native 环境的设置,请转到此链接并按照所有步骤设置 RN 环境。
第二:: 您是否已将开发团队添加到您的 Xcode > 目标 > 签名和功能中。 注意:如果您的 Xcode 中没有添加或没有任何开发团队,您将无法在物理设备中运行您的应用程序。
然后,如果环境设置完成,请执行以下操作
your_project.xcworkspace
文件Command + Shift + K
Command + ,
然后转到位置选项卡,然后单击派生数据路径上的箭头图标并将其删除)Command + R
确保在执行这些步骤之前重新安装了 Pod
就我而言,我的 iOS 应用程序不允许向我的笔记本电脑发送
http
请求。因此,RN 应用程序无法与 Metro 通信,从而阻止了“热重载”功能。我修复了它,添加了ios/Info.plist
:<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
请记住,此选项允许与您的应用程序进行任何连接,因此不应在生产中使用它。