升级本机反应时如何解决“project.pbxproj”文件中的冲突?
Posted
技术标签:
【中文标题】升级本机反应时如何解决“project.pbxproj”文件中的冲突?【英文标题】:How to resolve conflicts in `project.pbxproj` file while upgrading react native? 【发布时间】:2019-02-01 13:39:42 【问题描述】:我正在使用 Xcode 9.4 并且当前反应原生版本 @0.54.4 我想将版本升级到 0.55.4。
当我使用react-native-git-upgrade
升级我的项目时,我在project.pbxproj
中看到了一些未合并的冲突。有些设置是我自己的,与新版本的更改有冲突。
我尝试了所有可能的方法来解决冲突。但是 X-code 仍然显示错误could not load the project
,并且它不允许我构建我的项目。
我如何理解这些冲突指的是什么以及如何安全地解决这些冲突?
【问题讨论】:
【参考方案1】:不幸的是,没有解决冲突的神奇方法。我希望有。该文件由 Xcode 管理,根据个人经验,我发现执行合并很容易搞砸它。
Git
绝对是你最好的朋友。确保在开始任何合并之前,您在一个新分支上并完全提交,这样如果您搞砸了,您可以轻松地回到原来的版本。
我通常做的是保留project.pbxproj
的原始版本,然后在 Xcode 中手动进行更改。我知道这听起来不太理想,但这确实意味着您应该能够在 Xcode 中打开项目,尽管您的项目可能还没有运行 - 还没有。
如果您不清楚要保留哪个版本,我会保留我们的,因为那是您project.pbxproj
的原始 版本。来自documentation:
您可以将“我们的”视为“您的团队”,将“他们的”视为“React Native 开发团队”。
然后我将手动进行更改,如下所述。因为这将显示他们的变化,希望不会那么多。
为了帮助我找到我必须做出的改变,我发现React Native Upgrade Helper 是一个非常宝贵的资源。在那里,您可以找到您选择的react-native
的任意两个版本的git diff
。 (这样您就不必创建两个项目,然后自己比较它们,节省大量时间。)
目前您正在从 0.54.4
升级到 0.55.4
此链接显示这些版本之间的差异
https://react-native-community.github.io/upgrade-helper/?from=0.54.4&to=0.55.4
如需更多帮助,您可以在特定 react-native
版本中创建项目,使用以下内容将为版本 0.55.4
创建项目。
react-native init newproject --version react-native@0.55.4
这样您就可以在 Xcode 项目内部查看已添加的内容以及添加内容的来源,因为 git diff
并不总能说明它来自何处。
我在使用 react-native-git-upgrade
时运气不佳,而且我开始更喜欢手动操作,因为这样做更成功。
【讨论】:
Kaleidoscope 是解决project.pbxproj
问题的魔法。
@FlorentMorin 我没有使用它,但它看起来一年多没有任何更新。评论提到了很多崩溃......并没有激发信心。另外,如果我要花 69.99 美元买它,那么我至少希望它有超过 3.3 颗星。
我每天都在 macOS Mojave 上使用它。我建议下载试用版以发表您自己的意见:-)
@Andrew,但我们怎么知道要保留哪些更改? Ours
或 theirs
。有没有更好的方法,或者我在某个地方犯了错误?顺便说一句,我无法从 xcode 打开我的项目设置,因为从左侧导航窗格中双击我的项目会抛出 workspace integrity
could not load project
!
我会一直保留ours
,因为那是您的原始版本。如果您已将更改合并到您的 project.pbxproj
中,那么您需要 revert
和 merge
或返回您的原始分支并再次开始合并过程(这通常是最简单的方法)。合并后,我永远无法解决冲突。最好避免它们。【参考方案2】:
在将 react native 从 0.51 更新到 0.55 后,在本地模式下一切似乎都正常运行。但生产构建失败。
我通过从 0.51 再次升级 react native 来解决此问题,并且几乎一直保留我的更改而不是他们的更改。
通过选择错误的更改,可能应该在文档中对遇到的问题类型进行更详细的解释。
【讨论】:
以上是关于升级本机反应时如何解决“project.pbxproj”文件中的冲突?的主要内容,如果未能解决你的问题,请参考以下文章