构建 iOS 应用程序时出现“断言失败:别名及其目标必须位于同一部分”错误的实际原因是什么?

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

我有一个使用 Ionic 创建的混合应用程序,最初在 Cordova 上运行,但一年前我们将其转移到 Capacitor,一切都按预期运行。最近,在尝试为 iOS 17 进行更新时,每次尝试为真实设备构建时都会出现此错误(在模拟器上运行效果很好):

Assertion failed: (aliasSectionNum == sectionNum && "alias and its target must be located in the same section"), function assignAliasAtomOffsetInSection, file Layout.cpp, line 3358.

XCode 中显示的“断言失败”错误的屏幕截图

我更新到了 Ionic 8 和 Capacitor 6,并更新了所有插件和代码更改以配合这些更新,一切都在模拟器上运行良好。但是当我尝试在实际设备上运行它时,我在构建时收到此错误。 它似乎来自 Cordova 插件之一,但没有指明是哪一个。

这是我的主要问题:

  1. 如何判断是哪个特定插件导致了问题?我有 6 个 Cordova 插件:
       [email protected]
       [email protected]
       [email protected]
       [email protected]
       [email protected]
       [email protected]
  1. 实际问题是什么?什么是“别名及其目标”?
  2. “Layout.cpp”文件来自哪里?我搜索了整个 Mac,包括隐藏文件/文件夹以及从我的应用程序生成的文件,但我在任何地方都没有看到任何名为“Layout.cpp”的文件。
  3. 在构建设置中添加其他链接器标志不起作用时,是否有另一种方法可以手动解决此问题?

项目环境详细信息:

Ionic 8
Capacitor 6
Angular 16
Node 18
VSCode 1.9
XCode 15.4

我已经在谷歌上搜索了近两周,但没有找到任何解释来解释到底是什么导致了这个问题。我看到的每个答案都只是说添加“-ld64”(或“ld_classic”,因为“-ld64”根据这篇文章已被弃用:https://developer.apple.com/forums/thread/715385)目标的构建设置中的其他链接器标志设置(如第一个屏幕截图所示)。

本节应该是我已经阅读过的帖子列表,但是当我列出所有链接时,它一直将我的问题标记为垃圾邮件。所以。阅读起来非常有用,但每次我必须与该网站交互时,这都是一场噩梦。不管怎样,如果你想要这个列表,也许我可以稍后将其作为评论或编辑发布,我不知道。 我尝试添加“-ld64” - 没有用 我将其更改为“-ld_classic” - 不起作用 我添加了“-ld64”和“ld_classic” - 不起作用 最初,列表中已经有一堆其他标志:我尝试将它们全部保留,并且我还尝试使用上面的所有组合清除它们。没用。上面链接的大多数帖子都有其他几个人评论说添加标志对他们也不起作用。

这是错误发生之前的构建日志的屏幕截图:

错误发生之前的构建日志的屏幕截图

感谢您对理解此问题的任何帮助,谢谢!

ionic-framework cordova-plugins capacitor xcode15 linker-flags
1个回答
0
投票

就我而言,我有一个“CordovaPluginStripe”文件夹,但我不再安装 Stripe 插件。删除该文件夹后,我再次构建了该项目,并且运行良好。

我希望这有帮助。

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