如何在升级React Native时解决`project.pbxproj`文件中的冲突?

6
我正在使用Xcode 9.4和当前的React Native版本@0.54.4,我想将版本升级到0.55.4。
当我使用“react-native-git-upgrade”升级我的项目时,在“project.pbxproj”中出现了一些未合并的冲突。其中一些设置是我自己的,与新版本中的更改发生了冲突。
我尝试了所有可能的方法来解决这些冲突。但仍然在X-code中显示错误“无法加载项目”,它不允许我构建我的项目。
我该如何理解这些冲突所指的内容,以及如何安全地解决这些冲突?
2个回答

9
很遗憾,没有什么神奇的方法可以解决冲突。我希望有这样的方法。该文件由Xcode管理,从个人经验来看,我发现在执行合并时很容易搞砸它。
Git绝对是你最好的朋友。确保在开始任何合并之前,你处于一个新分支并且已经完全提交,以便如果你搞砸了,你可以轻松地回到原始版本。
我通常做的是保留project.pbxproj的原始版本,然后在Xcode中手动进行更改。我知道这听起来不太理想,但这意味着你应该能够在Xcode中打开项目,尽管你的项目可能还不能运行。
如果你不确定应该保留哪个版本,我会保留ours,因为那是你的project.pbxproj的原始版本。根据文档

你可以把"ours"看作是"你的团队",把"theirs"看作是"React Native开发团队"。

然后我将按照以下详细说明手动进行更改。因为这将显示他们的更改,而且希望更改不会太多。
为了帮助我找到我必须进行的更改,我发现React Native Upgrade Helper是一个非常有价值的资源。在那里,您可以找到您选择的任意两个版本的react-nativegit 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相关的问题。 - Florent Morin
@FlorentMorin 我没有使用过它,但看起来它已经一年没有更新了。评论中提到了很多崩溃的情况...这并不令人信服。此外,如果我要花费$69.99购买它,那么我至少希望它拥有超过3.3颗星的评价。 - Andrew
我每天都在macOS Mojave上使用它。我建议下载试用版以形成自己的意见 :-) - Florent Morin
1
我会始终保留ours,因为那是你的原始版本。如果你已经将更改合并到了你的project.pbxproj中,那么你需要revert这个merge或者回到你的原始分支重新开始合并过程(这通常是最简单的方法)。一旦合并完成后,我从来没有能够解决冲突。最好还是避免它们。 - Andrew
@Kasra,看一下react-native upgrade helperproject.pbxproj文件已经做了一些更改,大多数看起来是pod更改,所以在更新podfile后运行pod install即可解决大部分问题。 - Andrew
显示剩余4条评论

0

将React Native从0.51升级到0.55后,本地模式下一切似乎都正常运行。但是生产构建失败了。

我通过再次升级React Native到0.51,并几乎始终保留我的更改而不是他们的更改来解决了这个问题。

也许文档中应该有更详细的说明,关于选择错误更改时可能遇到的问题类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接