如何手动安装XMPPFramework的最新指南?

14

我很难让XMPPFramework正常工作。我已经按照网络上的每一个方向进行了操作,但XCode找不到我的XMPPFramework类。

在'XMPPStream'之前预期的说明符限定列表 XMPP.h:没有这个文件或目录 XMPPRoster.h:没有这个文件或目录

我已经将XMPPFramework复制到项目的根目录中。为什么这些文件不能被找到?我需要在“Header Search Paths”或者“Library Search Paths”下进行设置吗?

我已经把这些条目设置为$(inherited)和$(SRCROOT),而且XCode 4.2自动填充了我的项目根目录,仍然找不到我的文件。

我相信我不是唯一遇到这个问题的人,而且这是一个阻碍。有什么建议吗?


由于这个提交 https://github.com/robbiehanson/XMPPFramework/commit/5aafcdfd27b6b4403e6e357f5687fabded3362ec ,@Brian的这些指令已经不再有效了。如果您想使用这些指令,请先还原此提交,然后再次尝试即可。 - Joe
3个回答

38

Github上的wiki已经过时了。这是我如何手动安装XMPPFramework的方法。

步骤1

XMPPFramework repository克隆到您机器上的某个位置,并将所需文件夹拖到somewhere/XMPPFramework中,然后将其添加到您的Xcode项目中。

必要的文件夹包括:

  • Vendor/CocoaAsyncSocket
  • Vendor/CocoaLumberjack
  • Vendor/KissXML
  • Vendor/libidn
  • Authentication
  • Categories
  • Core
  • Utilities

您可能还需要Extensions,但这是可选的。

在将文件夹拖到Xcode时,请确保选择复选框/单选按钮与此图像完全相同:

enter image description here

步骤2

a) 拖动 Sample_XMPPFramework.h 到你的 Xcode 并勾选像步骤1一样的复选框/单选按钮。

b) 将其重命名为 XMPPFramework.h

c) 根据您的需求自定义 XMPPFramework.h 的内容。(我没有改变任何内容)

在完成步骤1和2后,Xcode 项目导航器中的文件结构应如下所示:

enter image description here

步骤三

链接以下框架和库

  • CFNetwork.framework
  • Security.framework
  • libxml2.dylib
  • libresolv.dylib
  • libidn.a

enter image description here

步骤四

Build Settings 中添加以下两行:

  • other linker flags = -lxml2 enter image description here
  • HEADER SEARCH PATHS = /usr/include/libxml2 enter image description here

完成上述四个步骤后,您应该已经成功了。但是,请注意,在使用 XMPPFramework 之前,通常需要先导入 #import <UIKit/UIKit.h>


3
谢谢这篇文章,帮了我很多。但我必须说整个过程感觉很令人沮丧和不稳定。 - Kevin R
1
Facebook 扩展显然在 iPhone 上不起作用(它无法编译,因为由于某种原因它找不到其中一个依赖项,该依赖项位于其内部的项目中)。我还没有设法找出问题所在,所以我只好移除了 Facebook 扩展。 - Velociround
由于框架中有很多CoreData模型,我想知道如何更新lib+model以及如何检查代码中使用的XMPPFramework的当前版本。 - yasirmturk
@user3916570,您找到解决方案了吗?我也遇到了同样的错误。 - Shruti
1
请使用 #import "libxml/tree.h" 代替 libxmlSimu - jaskiratjd
显示剩余7条评论

4
在XMPPFramework gitHub wiki 1 上有一步步的说明,可以帮助你设置XMPPFramework。事实上,你提到的错误与指南中所示的接近。当导入XMPPFramework类时,如调用 '#import XMPP.h',XCode会显示“未找到'XMPP.h'”的错误。似乎XCode没有找到任何XMPPFramework文件。希望这可以为你解决你面临的问题提供足够的信息,尽管该指南并非专门针对iOS-5。

1
尽管这是被接受的答案,但下面针对 Brian 的帖子更适用于 Xcode 6。 - Alaa Eldin
@jarlh,兄弟,你能帮我解决这个问题吗?https://stackoverflow.com/questions/44172852/how-to-parse-xmppmessage-element-attribute-and-node-in-xmppframework-with-swif? - May Phyu

0

与@Brian答案中的指令相关的其他信息。

第3步的补充:
如果在“选择要添加的框架和库”窗口中没有可用的lib文件,例如libxml2.dylib,请按照以下步骤查找它:

  1. 单击添加其他...
  2. 在文件选择窗口中,COMMAND+SHIFT+G(转到文件夹)
  3. 键入/usr/lib,然后按Enter或单击前往
  4. 选择所需的.dylib文件,然后单击打开

第4步之后:
还要注意XMPPFramework及其依赖项使用ARC。 如果您的应用程序主要使用MRR而不是ARC,则需要将应用程序转换为ARC或执行第5步。

第5步

向XMPPFramework文件添加-fobjc-arc编译器标志。

对于将使用XMPPFramework的每个目标,在Xcode中进行如下操作:

  • 进入目标的设置
  • 进入Build Phases
  • 展开Compile Sources
  • 在列表中选择所有与XMPPFramework相关的文件
  • 按下Enter键打开编译器标志的编辑窗口
  • 输入-fobjc-arc
  • 再次按下Enter键保存更改。

Compile Sources列表是无序的,因此使用搜索字段来过滤XMPPXEP可以帮助找到大部分文件,但仍然需要从完整的文件列表中挑选出一些文件。


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