如何在iOS应用程序中更新框架?

16
我正在使用Nuance的SpeechKit框架编写应用程序。我刚刚下载了一个包含某些类中新方法的新版本框架。为了升级,我删除了旧框架并重新添加了新框架。当我在Xcode中右键单击框架并单击“在Finder中显示”,它会显示新框架。当我在Xcode中打开框架的“Headers”子文件夹时,我可以看到新方法。
问题是我的类似乎仍在引用旧位置的头文件,因此我的应用程序中无法看到新方法。
如何正确升级框架?在Xcode中是否有其他包含SDK路径引用的位置?

你尝试过“全部清除”吗? - user142019
是的 - 没有效果。甚至做了通常的事情 - 清理,关闭Xcode,重新启动我的Mac等等。没有用。 - MusiGenesis
1
清除 Derived Data 通常就可以解决问题。 - Fattie
3个回答

16

您需要删除项目的派生数据 - 这是XCode组织者中项目选项的一个选项,在项目选项卡上。它将删除框架的缓存构建,促使Xcode使用新的构建。

  1. 从顶部菜单选择“窗口/组织者”
  2. 在组织者窗口顶部,点击“项目”伪选项卡(图标看起来像XCode项目文件)
  3. 从左侧列表中选择项目
  4. 在项目信息标题下方的区域中,单击“Derived Data”旁边的“删除”按钮。
  5. 列表项

编辑:从XCode 12开始(适用于Xcode 8及以上版本),您可以像这样删除派生数据:

如果您处于工作区环境,请转到 文件 > 工作区设置,如果您处于常规项目环境中,请转到 文件 > 项目设置

然后,在“Derived data”部分下的小灰色箭头上单击并选择要在Finder中删除的项目文件夹。


我正在使用Xcode 3.2.5 - 当我在PROJECTS&SOURCES伪选项卡下单击Appname.xcodeproj项目时,右窗格中什么也没有显示。 - MusiGenesis
@MusiGenesis 让我们在聊天室里继续这个讨论 - RyanR
1
很抱歉,谢谢你愿意继续帮助(我之前没见过聊天功能)。最终我选择了新建一个项目并导入我的代码文件。在添加了SpeechKit框架和一些Nuance“这是你需要的所有其他框架”的列表中没有的其他框架后,我能够看到新的方法。不过我仍然好奇在Xcode中我需要做哪些操作才能将项目指向正确的头文件。虽然我已经习惯了Xcode中这种情况的处理方式。 - MusiGenesis
1
我刚刚遇到了这个问题(虽然是不同的框架),最终唯一有效的解决方法就是从我的磁盘中删除所有旧版本的实例。我不知道它链接到哪个版本,但肯定不是源文件夹中或链接说明页面中引用的那个版本。一旦我删除了其他版本,它就可以编译成功并且文件也被正确检测到了。希望对你有所帮助。 - Lucas
我正在使用Xcode 7,但是我不得不去“窗口>项目”中删除派生数据。但即使我这样做了,我的项目仍然认为我的框架存在!!! - Ethan Fischer
显示剩余7条评论

9
我发现了导致我们遇到问题的原因。
当您构建新版本时,必须更新“当前库版本”。 还有一个“兼容性版本”。
在Xcode中选择框架目标,在构建设置中搜索链接,您将在那里看到此设置。
我们创建了一个构建脚本,每次构建时都会提高此版本号。
Xcode会缓存框架并在可能的情况下使用缓存。这就是为什么需要更改此数字的原因。

3
你可以分享一下构建脚本吗? - Raffael
在这个问题上浪费了好两个小时后,你的答案正是我所需要的东西。 - CSJordan

0
如果您正在使用CocoaPods,请运行pod update [PODNAME]

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