创build包含RestKit库的静态库

我在使用RestKit库时遇到了另一个问题。

我的目标是为我的公司创build一个特定的库,可以用于所有IOS开发项目。

为此,我创build了一个库,其中我导入了库RestMark。 我遵循了RestKit xCode 4.x的安装指南。

于是我创build了一个新项目,导入了名为“m2mBackEnd”的库。

在我使用库的testing项目中,我做了以下的Oppers:

1 – 我导入了“m2mBackEnd”库。

2 – 在“构build设置/其他链接器标志”我添加了“-ObjC”。

3 – 在“构build设置/用户头searchpath”我添加了包含所有'的文件夹。 H'。

4 – 在“构build阶段/目标依赖”我添加了依赖到“m2mBackEnd”

5 – 在“构build阶段/链接二进制库”我添加了“libm2mBackEnd.a”。

但它不起作用,我遇到错误:

undefined symbols for architecture i386: "_CFHTTPMessageCreateRequest", referenced from: -[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o) "_CFHTTPMessageAddAuthentication", referenced from: -[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o) "_CFHTTPMessageCopyHeaderFieldValue", referenced from: -[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o) "_kCFHTTPAuthenticationSchemeBasic", referenced from: -[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o) "_kCFHTTPVersion1_1", referenced from: -[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o) "_SCNetworkReachabilityCreateWithAddress", referenced from: -[RKReachabilityObserver initWithAddress:] in libm2mBackEnd.a(RKReachabilityObserver.o) "_SCNetworkReachabilityCreateWithName", referenced from: -[RKReachabilityObserver initWithHost:] in libm2mBackEnd.a(RKReachabilityObserver.o) "_SCNetworkReachabilityGetFlags", referenced from: -[RKReachabilityObserver getFlags] in libm2mBackEnd.a(RKReachabilityObserver.o) "_SCNetworkReachabilitySetCallback", referenced from: -[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) "_SCError", referenced from: -[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) -[RKReachabilityObserver unscheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) "_SCErrorString", referenced from: -[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) -[RKReachabilityObserver unscheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) "_SCNetworkReachabilitySetDispatchQueue", referenced from: -[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) -[RKReachabilityObserver unscheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o) "_UTTypeCreatePreferredIdentifierForTag", referenced from: -[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o) "_UTTypeCopyPreferredTagWithClass", referenced from: -[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o) "_kUTTagClassFilenameExtension", referenced from: -[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o) "_kUTTagClassMIMEType", referenced from: -[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o) "_xmlNodeGetContent", referenced from: -[RKXMLParserLibXML parseNode:] in libm2mBackEnd.a(RKXMLParserLibXML.o) "_xmlNewParserCtxt", referenced from: -[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o) "_xmlParseMemory", referenced from: -[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o) "_xmlFreeDoc", referenced from: -[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o) "_xmlFreeParserCtxt", referenced from: -[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o) "_xmlFree", referenced from: -[RKXMLParserLibXML parseNode:] in libm2mBackEnd.a(RKXMLParserLibXML.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我想念什么? 或做错了什么?

是否有可能使用RestKit创build一个库?

感谢您的帮助。

我希望你能在这个时候解决这个问题,如果不尝试下面的安装步骤

检查是否完成了读取自述文件中提到的安装步骤,并添加了其中提到的所有框架工作,以及“生成”设置中提到的更改

Xcode 4.x(Git子模块)

  1. 添加子模块: git submodule add git://github.com/RestKit/RestKit.git RestKit
  2. 打开您希望在Xcode中添加RestKit的项目。
  3. 集中您的项目,并select“视图”菜单>“导航”>“项目”,以查看项目文件列表。
  4. 将Finder中的RestKit.xcodeproj文件拖放到“”.xcodeproj上。
  5. 点击左侧边栏中的项目名称,打开窗口右侧窗格中的项目设置视图。
  6. 在中间窗格中,您将看到项目的PROJECTTARGETS标题。 点击您的项目名称,然后select顶部的“生成设置”打开整个项目的“生成设置”编辑器。
  7. find标题searchpath设置。 双击并添加一个新条目。 将searchpath添加到已添加到项目中的"$(SOURCE_ROOT)/RestKit/Build"目录。 不要选中Recursivecheckbox。
  8. find“ 库searchpath”设置。 双击并添加一个新条目。 将searchpath添加到已添加到项目中的"$(SOURCE_ROOT)/RestKit/Build/$(BUILD_STYLE)-$(PLATFORM_NAME)"目录中。
    注意 :这只有在您使用DerivedData时才有必要。
  9. find其他链接器标志条目并双击它。 使用+button添加一个新条目并input-ObjC -all_load 。 使用完成buttonclosures编辑器。
  10. 在编辑器窗格中间的TARGETS列表中find要添加RestKit的目标 。 select它以打开窗口右侧窗格中的目标设置编辑器。
  11. 单击窗口顶部的Build Phases选项卡打开Build Phases编辑器。
  12. 单击“ 目标依赖项”和“ 链接二进制库”项旁边的显示三angular形。
  13. 目标依赖项部分,点击+button打开目标select表。 点击RestKit聚合目标(它将有牛眼图标),然后点击添加button创build一个依赖关系。
  14. Link Binary with Libraries部分,单击+button打开Libraryselect表。 在这里,我们需要指示目标链接所有必需的RestKit库和多个系统库。 select以下每个项目(一次一个或按住Command键同时select所有项目),然后单击添加button:
    • libRestKitCoreData.a – 可选。 只有在使用核心数据时才有必要。
    • libRestKitJSONParserJSONKit.a
    • libRestKitNetwork.a
    • libRestKitObjectMapping.a
    • libRestKitSupport.a
    • CFNetwork.framework
    • CoreData.framework – 可选。 只有在使用核心数据时才有必要
    • MobileCoreServices.framework
    • SystemConfiguration.framework
    • libxml2.dylib – 可选。 只有在您从XML有效载荷进行映射并将libRestKitXMLParserLibxml.a链接到您的应用程序时才有必要。
  15. 在继续之前,请确认所有库都显示在“ 链接二进制库”部分。

恭喜,您现在已经将RestKit添加到基于Xcode 4的项目中了!

您现在只需要在应用程序的适当位置添加RestKit库的包含。 相关的包括:

 #import <RestKit/RestKit.h> // And if you are using Core Data... #import <RestKit/CoreData/CoreData.h> 

尝试添加CFNetwork.framework到您的项目的目标(为我解决了前6个错误)

推荐的安装RestKit的方法是通过CocoaPods包pipe理器,因为它提供了灵活的依赖pipe理和简单的安装。 为获得最佳效果,build议您使用通过Homebrew安装的Git> = 1.8.0,通过CocoaPods> = 0.19.1进行安装。

如果不可用,请安装CocoaPods:

 $ [sudo] gem install cocoapods $ pod setup 

切换到Xcode项目的目录,然后创build并编辑您的Podfile并添加RestKit:

 $ cd /path/to/MyProject $ touch Podfile $ edit Podfile platform :ios, '5.0' # Or platform :osx, '10.7' pod 'RestKit', '~> 0.20.0' # Testing and Search are optional components pod 'RestKit/Testing', '~> 0.20.0' pod 'RestKit/Search', '~> 0.20.0' 

安装到您的项目中:

 $ pod install 

从.xcworkspace文件(不是通常的项目文件)在Xcode中打开项目

 $ open MyProject.xcworkspace 

请注意,如果安装失败,可能是因为您正在安装的Git版本低于CocoaPods所期望的版本。 请确保通过执行git --version来运行Git> = 1.8.0。 您可以通过执行pod install --verbose来获得安装详细信息的完整画面。