编辑:
好吧,事实证明这不是 AppStore 的问题,我从 Xcode Release模式运行应用程序,我在模拟器上运行相同的旧版本我不知道为什么,但 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
inside /ios/ProjectName
但是当我从 Xcode 运行代码时它仍然给我一个旧版本
我还尝试清理、重建和删除派生数据,然后再次构建,结果相同
我最近向 Apple App Store 上传了一个应用程序,但似乎遇到了问题这是我上传该应用程序的情况,它获得批准并表示可以出售,但是当我去应用程序商店下载该应用程序时它只是应用程序的以前版本,我没有看到应用程序上所做的所有新更改...这对我来说有点奇怪我还在新版本发布上上传了一个新 Logo 并且 Logo 已更新..版本也在应用程序商店列表上更新,前一个版本是 1.0,这个版本显示 1.1,“新功能”部分也更新了……我还更改了这个新版本的预览和屏幕截图,这也反射(reflect)了在应用程序商店列表中,但只有当我下载该应用程序时,我才能获得以前的版本。
我尝试转到我的应用程序商店连接,然后转到 Activity,我看到我的构建在那里,并且有正确的上传日期和构建编号……我在这里遗漏了什么吗?
谢谢,
最佳答案
这是一个详细的试错过程,试图确定哪一步对解决问题至关重要。
我从代码库开始,其中 npx react-native run-ios --configuration Release
确实反射(reflect)了代码库中的新变化。每个后续轮都在上一轮之后,即上一轮的结束状态可能会影响下一轮。
第一轮
- 从 Xcode 和文件系统中删除
main.jsbundle
。 - 更改 React native 代码库。
- 运行
npx react-native run-ios --configuration Release
- 失败,新更改未反射(reflect)在构建中。
第二轮
- 尝试
npm start -- --reset-cache
- 运行
npx react-native run-ios --configuration Release
- 失败,新更改未反射(reflect)在构建中。
第三轮
- 尝试在 Xcode 中使用“Cmd + Shift + K”来清理构建。
- 运行
npx react-native run-ios --configuration Release
- 失败,新更改未反射(reflect)在构建中。
第四轮
- 运行
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
- 失败,新更改未反射(reflect)在构建中。
第五轮
- 在 Xcode 中,手动将
main.jsbundle
文件添加到您的应用程序文件夹中。在您的项目中,右键单击包含您的应用程序名称的文件夹,选择“将文件添加到您的应用程序名称”,然后在应用程序文件夹中添加main.jsbundle
。请注意,我们在此处添加的 bundle 是在第 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
而无需手动构建包。复制消息未显示。 - 失败,新更改未反射(reflect)在构建中。请注意,
main.jsbundle
存在于 Xcode 和文件系统中。
第七轮
- 运行
watchman watch-del-all
清理watchman
的缓存。 - 运行
npx react-native run-ios --configuration Release
。复制消息未显示。 - 失败,新更改未反射(reflect)在构建中。
第八轮
- 运行
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
。这一次,出现了复制消息。 - 成功,现在显示最新的更改。
结论
至少在我的笔记本电脑上,每个新版本构建都需要手动构建一个离线包,以反射(reflect) React Native 代码库中的最新变化。仅当将 bundle 添加到 Xcode 中的应用程序文件夹时,构建 bundle 才有效。看来我们只需要将包添加到 Xcode 一次。
还有一个重要的警告是,不同的 Xcode 版本的行为可能会有所不同。
我正在使用的版本
- macOS Catalino 10.15.6
- Xcode 11.6
- react native 0.61.5
关于Xcode 不反射(reflect)来自 react-native 的最新应用程序代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558375/