Añadiendo las dependencies de cocoapod a un marco de toque de cocoa.

Estoy tratando de averiguar cómo agregar dependencies de pod de cocoa a una aplicación de iOS que tenga un marco táctil de cocoa embedded. Tengo mi podfile configurado así:

link_with ['TestApp', 'TestAppFramework'] platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' pod 'google-plus-ios-sdk', '~> 1.7' 

Luego agrego un controller de vista con un button de inicio de session según las instrucciones aquí:

https://developers.google.com/+/mobile/ios/sign-in

y todo comstack sin problemas. Si luego ejecuto la aplicación, se iniciará y mostrará un button de signo de más en google, pero tengo muchas advertencias sobre las classs de Google definidas en dos lugares, por ejemplo:

objc [6727]: La class GPPSignIn se implementa tanto en /Users/jamesburke/Library/Developer/Xcode/DerivedData/TestApp-eiqrhcijoqplxgaoodgtwzncvhjk/Build/Products/Debug-iphonesimulator/TestAppFramework.framework/TestAppFramework y / Users / jamesburke / Library / Developer /CoreSimulator/Devices/730A1805-D46F-4D11-9F9E-DA37C1147F9A/data/Containers/Bundle/Application/EB7EE52A-7FB6-45CE-81B4-1E9A45875E69/TestApp.app/TestApp. Uno de los dos será usado. Cuál no está definido.

Si presiono el button de inicio de session, aparece un error que indica que no he configurado el ID de cliente de Google, lo que tengo, pero debido a que la class GPPSignIn se basa en una instancia compartida, parece que las classs duplicadas han confundido cosas:

2014-11-24 20: 54: 25.557 TestApp [6727: 155282] *** Terminar la aplicación debido a una exception no detectada 'NSInvalidArgumentException', razón: 'Debe especificar | clientID | para | GPPSignIn | '

Mirando en la traza de la stack, volvemos del scope de TestApp al TestAppFramework, aunque no hay ningún código en el marco en este punto

 … 3 TestAppFramework 0x000000010c7f1a9c -[GPPSignIn assertValidParameters] + 77 4 TestAppFramework 0x000000010c7f35e7 -[GPPSignIn authenticateMaybeInteractively:withParams:] + 118 5 TestAppFramework 0x000000010c7f5ac8 -[GPPSignInButton buttonPressed] + 164 6 UIKit 0x000000010b4c38be -[UIApplication sendAction:to:from:forEvent:] + 75 … 19 UIKit 0x000000010b4c2420 UIApplicationMain + 1282 20 TestApp 0x000000010a25e9f3 main + 115 

Consigo este problema con algunos otros packages de cocoa, por ejemplo, mailcore2-ios, pero algunos otros packages no parecen plantear las mismas advertencias.

¿Hay alguna manera de configurar mi podfile para que mi marco y mi aplicación tengan acceso a las mismas dependencies, pero sin chocar en el time de ejecución? ¿O debería no configurar mis dependencies de esta manera?

El link_with se debe utilizar para (corregirme si me equivoco) vincular objectives dentro del mismo proyecto. Lo que está describiendo es un marco embedded (que es un proyecto separado).

Lo que realmente quiere hacer es agregar las dependencies al marco embedded como:

 source 'https://github.com/CocoaPods/Specs.git' workspace 'TestApp.xcworkspace' def import_pods pod 'google-plus-ios-sdk', '~> 1.7' end target : TestAppFramework do xcodeproj 'TestAppFramework.xcodeproj' platform :ios, '8.0' link_with 'TestAppFramework', 'TestAppFrameworkTests' import_pods end target : TestApp do xcodeproj 'TestApp.xcodeproj' platform :ios, '8.0' link_with 'TestApp', 'TestAppTests' import_pods end 

Este ejemplo agrega el google sdk a ambos proyectos (y vincula a sus objectives de testing), tal vez solo lo necesite en el marco embedded.

No estoy seguro de que pod 'google-plus-ios-sdk', '~> 1.7' sea compatible con Framework. En tu podfile

 target 'YourProjectName' do pod 'google-plus-ios-sdk', '~> 1.7' end 

Trate de usarlo así.