缺少两个 dylib,但没有 Xcode 链接错误

Missing two dylib, but no Xcode linking errors

我正在使用 Xcode 7.3 更新旧的 iOS 应用程序。部署目标是7.0,之前的版本是为iOS8构建的。包含了大约十几个框架(例如Security.framework)还有sqlite3.0.dyliblibSystem.B.dylib 在项目导航器中显示为红色,因为找不到。事实上,"Open in Finder" 没有给出结果。

然而,尽管如此,即使在 Clean 之后,该应用程序仍能在 SIM 卡和设备上无错误编译和运行。 SQLite 库正在以某种方式被 linked,但是这里有什么魔力在起作用?

我想我应该只添加 libsqlite3.0.tbd 但我想了解发生了什么,以防我在 iOS 下破坏某些东西 7和 8(为什么没有 link 错误?)。需要我 libSystem.B.dylib -- 需要吗?

sqlite3.0.dyliblibSystem.B.dylib 是系统库。项目导航器和 dylib 搜索路径是不同的东西。顾名思义,项目导航器用于导航项目,因此它或多或少是开发人员轻松导航项目的工具。通常它还会显示您的 linked 库,但它们保留了这些框架的路径,并且该路径在您的情况下不再有效。另一方面,您可以在 Build settings 中找到 Framework Search Paths。 linker 在这些路径中搜索预期的库。但是由于你的库来自系统,你甚至不需要指定 Framework search path 因为系统库的路径是默认设置的,所以对于系统库你只需要指定你想要 link他们到你的项目。所以你可以安全地从你的项目导航器中删除那些红色的库。只要在你的设置中指定你想在 Link Binary With Libraries 中使用这些库,整个事情就应该有效。