【问题标题】:Xcode not reflecting latest app codes from react-nativeXcode 不反映来自 react-native 的最新应用程序代码
【发布时间】:2020-10-14 21:48:40
【问题描述】:

编辑:

好吧,事实证明这不是 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 并且“最新消息”部分也更新了...我也用这个新版本更改了预览和屏幕截图,这也反映了在应用商店列表中,但只有当我下载该应用时,我才能获得以前的版本。

我尝试转到我的应用商店连接,然后是 Activity,我看到我的版本在那里,上传日期和版本号正确...这里有什么我遗漏的吗?

谢谢,

【问题讨论】:

    标签: xcode react-native app-store app-store-connect


    【解决方案1】:

    这是一个详细的试错过程,试图确定解决问题的关键步骤。

    我从代码库开始,npx react-native run-ios --configuration Release 确实反映了代码库中的新变化。随后的每一轮都在上一轮之后,即上一轮的结束状态可能会影响下一轮。

    第一轮

    • 从 Xcode 和文件系统中删除 main.jsbundle
    • 对 react 本机代码库进行更改。
    • 运行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 本机代码库中进行另一项更改。
    • 直接运行npx react-native run-ios --configuration Release,无需手动构建包。复制消息未显示。
    • 失败,新更改未反映在构建中。请注意,main.jsbundle 存在于 Xcode 和文件系统中。

    第 7 轮

    • 运行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。这一次,复制消息出现了。
    • 成功,最新的变化正在显现。

    结论

    至少在我的笔记本电脑上,每个新版本构建都需要手动构建离线包,以反映 react 本机代码库中的最新更改。只有在将捆绑包添加到 Xcode 中的 app 文件夹时,才能构建捆绑包。看来我们只需要将bundle添加到Xcode一次。

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

    我正在使用的版本

    • macOS Catalino 10.15.6
    • Xcode 11.6
    • react-native 0.61.5

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,原来是因为它运行的是应用程序的缓存版本,所以通过 npm start --reset-cache 解决了这个问题

      【讨论】:

      • 哦,我明白了...但在我的情况下,该项目实际上已从 expo 中退出,每当我对项目进行更改时,我都需要运行 expo publish 以更新 xcode 使用的主 jsbundle 文件。
      猜你喜欢
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2019-12-23
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多