Xcode 11 beta模拟器加载AudioToolbox时崩溃

7

我正在尝试运行一个现有的应用程序,以便查看它在最新的Xcode测试版中的表现如何,并尝试在现有项目中使用SwiftUI。当我在模拟器上运行项目时,出现以下运行时崩溃:

dyld: Symbol not found: __ZTISt11logic_error
  Referenced from: /Users/lucas/Library/Developer/CoreSimulator/Devices/224333CF-0388-4F57-9633-6CAB37B33510/data/Containers/Bundle/Application/<Guid>/<AppName>.app/<AppName>
  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox
 in /Users/<name>/Library/Developer/CoreSimulator/Devices/224333CF-0388-4F57-9633-6CAB37B33510/data/Containers/Bundle/Application/<Guid>/<AppName>.app/<AppName>

将所有东西设置为iOS 13使错误消失,但这在不久的将来不起作用。也尝试删除与音频和AV框架有关的任何内容,但没有帮助。


2
我会在Radar上报告一个bug。他们会关注的。 - Jeshua Lacock
1
请您提交一个带有复现步骤的雷达,并将编号回报到这里?谢谢。 - Jeremy Huddleston Sequoia
@JeremyHuddlestonSequoia 我们这里也遇到了完全相同的错误,但我们的项目非常大,所以我们无法立即获得最小的复制案例。我们尝试启动一个新项目并导入音频和AV框架,但它们在所有模拟器中都正常工作。因此,我们最好的猜测是同时导入其他框架引起了问题。您有什么建议可以帮助我们确定问题吗? - Michael
@JeremyHuddlestonSequoia 对我们也一样。这是一个包含30000行代码的项目,如果我尝试在另一个项目中重现,我就无法对其进行隔离。我已经尝试删除Facebook SDK,因为它们使用了实际的框架,但并没有成功。 - Lucas van Dongen
@Michael 嗯,也许只有 Cocoa Pods 文件就足够了? - Lucas van Dongen
是的,这绝对是Xcode的bug。 - Ahmad Farrag
4个回答

5

显然是相同的错误,但使用不同的符号:

dyld: Symbol not found: __ZTISt9bad_alloc
  Referenced from: <bla-bla-bla>
  Expected in: /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 12.1.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox
 in <bla-bla-bla>

@Jeremy的答案对我有用。为了帮助找到它,文件位于 /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox.tbd

你需要去掉的行是:

    weak-def-symbols: [ __ZTI11CAException, __ZTIN8DSPGraph9ExceptionE, __ZTINSt3__112bad_weak_ptrE, 
                        __ZTINSt3__117bad_function_callE, __ZTISt11logic_error, __ZTISt12length_error, 
                        __ZTISt12out_of_range, __ZTISt13runtime_error, __ZTISt16invalid_argument, 
                        __ZTISt18bad_variant_access, __ZTISt8bad_cast, __ZTISt9bad_alloc, 
                        __ZTISt9exception, __ZTS11CAException, __ZTSN8DSPGraph9ExceptionE, 
                        __ZTSNSt3__112bad_weak_ptrE, __ZTSNSt3__117bad_function_callE, 
                        __ZTSSt11logic_error, __ZTSSt12length_error, __ZTSSt12out_of_range, 
                        __ZTSSt13runtime_error, __ZTSSt16invalid_argument, __ZTSSt18bad_variant_access, 
                        __ZTSSt8bad_cast, __ZTSSt9bad_alloc, __ZTSSt9exception ]

4
这是iOS 13 Beta SDK中的一个漏洞。你可以通过编辑SDK中的AudioToolbox.tbd文件来绕过它,以删除不应从那里导出的__ZTISt11logic_error(等)符号,或者你可以在链接行中添加-lc++,然后是-framework AudioToolbox(这样静态链接器可以使用libc++中的正确引用,而不是错误地从AudioToolbox引用)。另外,你也可以等待将来的修复版本 ;)

太棒了,Jeremy!给我一些时间来验证这个问题是否适用于我。 - Lucas van Dongen
Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox.tbd中没有__ZTISt11logic_error - Ortwin Gentz

1
我遇到了一个相同的错误崩溃:

dyld: Symbol not found: __ZTISt11logic_error
  Referenced from: <bla-bla-bla>
  Expected in: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
 in <bla-bla-bla>

但我在使用Clion编译自己的C++项目时遇到了这个问题,所以与模拟器或iOS无关。

当时我使用的是XCode 10.2.1。我尝试了多种方法来解决这个崩溃问题,但都没有帮助。 幸运的是,我找到了这个post,所以我把我的XCode和它的命令行工具降级到了10.1版本,这帮助了我!

因此,即使我的建议可能无法解决XCode 11测试版的问题,我希望它能帮助其他遇到同样错误的开发人员。


-1
这是一个Xcode的bug,但是有一个解决方法。在您的目标的“框架库和嵌入式内容”部分中,添加libc++.tbd并确保它位于列表顶部。那应该就是你需要的全部了。

2
这并没有帮助我(而且不可能重新排序此列表,因此我无法将libc++置于顶部)。 - chris stamper

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