Xcode 未反映来自react-native 的最新应用程序代码

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

编辑:

好吧,事实证明这不是 AppStore 的问题,我从 Xcode 发布模式运行了应用程序,并且在模拟器上运行了相同的旧版本,我不知道为什么,但 Xcode 没有运行最新的 jsbundle。

现在我发现this问题也有同样的问题,并尝试遵循它,我运行了这个命令:

react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios/assets
并将新生成的
main.jsbundle
放入
/ios/ProjectName
中,但当我从Xcode运行代码时,它仍然给我一个旧版本 我还尝试清理和重建并删除派生数据并再次构建,结果相同

我最近将一个应用程序上传到Apple App Store,但似乎遇到了问题,这是我上传该应用程序的情况,它获得了批准,并说它已准备好出售,但当我去应用程序商店并下载该应用程序时,它是只是应用程序的先前版本,我没有看到应用程序上所做的所有新更改...这对我来说有点奇怪,我还在新版本发布中上传了新徽标,并且徽标已更新..该版本也在应用商店列表中进行了更新,前一个是 1.0,这个显示的是 1.1,并且“新增内容”部分也已更新...我还更改了这个新版本的预览和屏幕截图,这也反映在应用程序商店列表,但只有当我下载应用程序时,我才能获得以前的版本。

我尝试去我的应用程序商店连接,然后活动,我看到我的构建有正确的上传日期和构建编号...我在这里缺少什么吗?

谢谢,

xcode react-native app-store app-store-connect
3个回答
6
投票

这是一个详细的试错过程,试图确定哪一步对于解决问题至关重要。

我从代码库开始,其中

npx react-native run-ios --configuration Release
确实反映了代码库中的新更改。后续的每一轮都会跟随上一轮,即上一轮的结束状态可能会影响下一轮。

第一轮

  • 从 Xcode 和文件系统中删除
    main.jsbundle
  • 对 React Native 代码库进行更改。
  • 奔跑
    npx react-native run-ios --configuration Release
  • 失败,新的更改未反映在构建中。

第二轮

  • 尝试
    npm start -- --reset-cache
  • 奔跑
    npx react-native run-ios --configuration Release
  • 失败,新的更改未反映在构建中。

第三轮

  • 尝试在 Xcode 中使用“Cmd + Shift + K”来清理构建。
  • 奔跑
    npx react-native run-ios --configuration Release
  • 失败,新的更改未反映在构建中。

第四轮

  • 奔跑
    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/your_app_name/main.jsbundle
  • 奔跑
    npx react-native run-ios --configuration Release
  • 失败,新的更改未反映在构建中。

第五轮

  • 在 Xcode 中,手动将
    main.jsbundle
    文件添加到您的应用程序文件夹中。在您的项目中,右键单击包含应用程序名称的文件夹,选择“将文件添加到 your_app_name”,然后在应用程序文件夹中添加
    main.jsbundle
    。请注意,我们在此处添加的捆绑包是在第 4 轮中创建的。
  • 运行
    npx react-native run-ios --configuration Release
    。在命令执行期间的输出消息中,会显示一条新消息:
    "Copying /.../your_app_name/ios/your_app_name/main.jsbundle"
  • 成功,新的变化正在显现。这表明在第 4 轮中创建的包用于此构建,而不是缓存在某处的某些先前版本。

第六轮

  • 在 React Native 代码库中进行另一项更改。
  • 直接运行
    npx react-native run-ios --configuration Release
    ,无需手动构建捆绑包。复制消息不显示。
  • FAIL,新的更改未反映在构建中。请注意,
    main.jsbundle
    存在于 Xcode 和文件系统中。

第七轮

  • 运行
    watchman watch-del-all
    清理
    watchman
    的缓存。
  • 运行
    npx react-native run-ios --configuration Release
    。复制消息不显示。
  • 失败,新的更改未反映在构建中。

第8轮

  • 运行
    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/your_app_name/main.jsbundle
    重建捆绑包。
  • 无需修改 Xcode,直接运行
    npx react-native run-ios --configuration Release
    。这次,复制消息出现了。
  • SUCCCESS,最新的变化现在正在显示。

结论

至少在我的笔记本电脑上,每个新版本都需要手动构建离线捆绑包,以反映 React Native 代码库中的最新更改。仅当将捆绑包添加到 Xcode 中的应用程序文件夹时,构建捆绑包才有效。看来我们只需要将bundle添加到Xcode一次即可。

还有一个重要的警告是,不同 Xcode 版本的行为可能会有所不同。

我正在使用的版本

  • macOS Catalino 10.15.6
  • Xcode 11.6
  • 反应原生0.61.5

0
投票

我遇到了同样的问题,结果是因为它正在运行应用程序的缓存版本,所以通过执行

npm start --reset-cache

解决了这个问题

0
投票
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/your_app_name/main.jsbundle 

我刚刚使用此命令生成了一个新的 main.jsbundle 文件。然后将该文件添加到我的 Xcode 项目中。右键单击 your_app_name > 将文件添加到 your_app_name > 选择新的 main.jsbundle。然后将其添加到“构建阶段”>“复制捆绑资源”。 Clean Build、重新构建并运行应用程序(直接通过 Xcode 上的 Run 按钮)。

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