Cree una biblioteca estática que contenga la biblioteca RestKit

Tengo otro problema en el uso de RestKit Library.

Mi objetivo es crear una biblioteca específica para mi empresa, que se pueda utilizar para todos los proyectos de desarrollo de IOS.

Para esto creé una biblioteca en la que importé la biblioteca RestKIt. Seguí la guía de instalación de RestKit xCode 4.x.

Entonces creé un nuevo proyecto en el que importé mi biblioteca llamada "m2mBackEnd".

En mi proyecto de prueba que usa la biblioteca, hice Oppers lo siguiente:

1 - Importé la biblioteca "m2mBackEnd".

2 - En "Configuración de compilación / Otras banderas del vinculador" agregué "-ObjC".

3 - En "Configuración de compilación / Rutas de búsqueda de encabezado de usuario" agregué la carpeta que contiene todo '. h '.

4 - En "Fases de compilación / Dependencias de destino", agregué la dependencia a "m2mBackEnd"

5 - En "Construir fases / Vincular binarios con bibliotecas" agregué "libm2mBackEnd.a".

Pero no funciona encuentro errores:

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)

¿Me pierdo algo? ¿O has hecho algo mal?

¿Es posible crear una biblioteca usando RestKit?

Gracias por tu ayuda.

preguntado el 08 de noviembre de 11 a las 17:11

3 Respuestas

Espero que haya resuelto el problema en este momento, si no, intente los pasos de instalación a continuación

Verifique si completó los pasos de instalación como se menciona en el archivo Léame y agregó todo el trabajo de marco mencionado en él, así como los cambios mencionados en la configuración de Compilación

Xcode 4.x (submódulo de Git)

  1. Agregue el submódulo: git submodule add git://github.com/RestKit/RestKit.git RestKit
  2. Abra el proyecto al que desea agregar RestKit en Xcode.
  3. Enfoque su proyecto y seleccione el menú "Ver"> "Navegadores"> "Proyecto" para mostrar la lista de archivos del proyecto.
  4. Arrastre el archivo RestKit.xcodeproj desde el Finder y suéltelo en su "" .xcodeproj.
  5. Haga clic en el nombre de su proyecto en la barra lateral de la izquierda para abrir la vista de configuración del proyecto en el panel derecho de la ventana.
  6. En el panel del medio verá PROJECT y OBJETIVOS encabezados para su proyecto. Haga clic en el nombre de su proyecto, luego seleccione Configuración de compilación en la parte superior para abrir el editor de configuración de compilación para todo su proyecto.
  7. Encuentra los Rutas de búsqueda de encabezado configuración. Haga doble clic y agregue una nueva entrada. Agregue una ruta de búsqueda al "$(SOURCE_ROOT)/RestKit/Build" directorio que ha agregado a su proyecto. NO comprobar el Recursive casilla de verificación.
  8. Encuentra los Rutas de búsqueda de bibliotecas configuración. Haga doble clic y agregue una nueva entrada. Agregue una ruta de búsqueda al "$(SOURCE_ROOT)/RestKit/Build/$(BUILD_STYLE)-$(PLATFORM_NAME)" directorio que ha agregado a su proyecto.
    NOTA: Esto solo es necesario si está NO utilizando DerivedData.
  9. Encuentra los Otras banderas del vinculador entrada y haga doble clic en él. Utilizar el + para agregar una nueva entrada e ingresar -ObjC -all_load. Despedir al editor con el Terminados
  10. Localice el objetivo al que desea agregar RestKit en el OBJETIVOS lista en el medio del panel del editor. Selecciónelo para abrir el editor de configuración de destino en el panel derecho de la ventana.
  11. Haga clic en el Fases de construcción pestaña en la parte superior de la ventana para abrir el editor de Fases de compilación.
  12. Haga clic en los triángulos desplegables junto al Dependencias de destino y Vincular binarios con bibliotecas artículos.
  13. En los Dependencias de destino sección, haga clic en + para abrir la hoja de selección de destino. Haga clic en el RestKit objetivo agregado (tendrá el icono de la diana) y haga clic en el Añadir botón para crear una dependencia.
  14. En los Vincular binarios con bibliotecas sección, haga clic en + para abrir la hoja de selección de la Biblioteca. Aquí debemos indicarle al objetivo que se vincule con todas las bibliotecas RestKit requeridas y varias bibliotecas del sistema. Seleccione cada uno de los siguientes elementos (uno a la vez o mientras mantiene presionada la tecla Comando para seleccionarlos todos a la vez) y luego haga clic en el Añadir botón:
    • libRestKitCoreData.a - Opcional. Solo es necesario si está utilizando Core Data.
    • libRestKitJSONParserJSONKit.a
    • libRestKitNetwork.a
    • libRestKitObjectMapping.a
    • libRestKitSupport.a
    • CFNetwork.framework
    • CoreData.framework - Opcional. Solo es necesario si está utilizando Core Data
    • MobileCoreServices.framework
    • SystemConfiguration.framework
    • libxml2.dylib - Opcional. Solo es necesario si está mapeando desde cargas útiles XML y vincula libRestKitXMLParserLibxml.a en su aplicación.
  15. Verifique que todas las bibliotecas aparezcan en el Vincular binarios con bibliotecas sección antes de continuar.

¡Felicitaciones, ya ha terminado de agregar RestKit a su proyecto basado en Xcode 4!

Ahora solo necesita agregar inclusiones para las bibliotecas RestKit en los lugares apropiados de su aplicación. Los incluidos relevantes son:

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

Respondido el 16 de diciembre de 11 a las 16:12

Por tu ayuda, no tengo una solución por el momento, ¿tus pasos solo me permitirán agregar Restkit en un proyecto? ¿O para crear una biblioteca que contenga también una biblioteca de restkit? Lo probaré esta semana. - Beber

Como su error dice error: el comando del vinculador falló con el código de salida 1 (use -v para ver la invocación) Creo que el error es con la bandera de Otro vínculo como dijo que ha agregado "Otras banderas del vinculador" agregué "-ObjC" "agregar" -ObjC "y" -all_load "Espero que solucione su problema - Nakkeeran

Esto realmente no responde a la pregunta, ya que no genera una biblioteca estática que pueda incluirse en otros proyectos. - Setomidor

Intente agregar CFNetwork.framework al objetivo de su proyecto (resolvió los primeros 6 errores para mí)

Respondido el 16 de Septiembre de 12 a las 11:09

El enfoque recomendado para instalar RestKit es a través de CocoaPods administrador de paquetes, ya que proporciona una gestión de dependencias flexible y una instalación muy sencilla. Para obtener los mejores resultados, se recomienda que instale a través de CocoaPods> = 0.19.1 usando Git> = 1.8.0 instalado a través de Homebrew.

Instale CocoaPods si aún no está disponible:

$ [sudo] gem install cocoapods
$ pod setup

Cambie al directorio de su proyecto Xcode, cree y edite su Podfile y agregue 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'

Instale en su proyecto:

$ pod install

Abra su proyecto en Xcode desde el archivo .xcworkspace (no el archivo de proyecto habitual)

$ open MyProject.xcworkspace

Tenga en cuenta que si su instalación falla, puede deberse a que está instalando con una versión de ir más bajo de lo que espera CocoaPods. Asegúrese de estar ejecutando Git> = 1.8.0 ejecutando git --version. Puede obtener una imagen completa de los detalles de la instalación ejecutando pod install --verbose.

Respondido 05 Oct 13, 02:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.