Advertencias de Xcode 7: el file object fue creado para la versión más reciente de iOS que para estar vinculado

Recientemente he integrado Google Cloud Messaging en una aplicación orientada a iOS 7 y iOS 8. Simplemente tomé Xcode 7 beta 4 para comenzar a usar la compatibilidad con iOS 9, y ahora obtengo un error del linker:

ld: warning: object file (.../Pods/GoogleInterchangeUtilities/Libraries /libProtocolBuffers.a(Descriptor.pb.o)) was built for newer iOS version (8.3) than being linked (7.0) 

y un puñado más de eso, todo por partes de libProtocolBuffers.a.

¿Significa esto que se requiere iOS 8.3 para usar la biblioteca GCM? Si es así, ¿por qué Xcode 6 escupió felizmente el código que (por todas las apariencias en mis testings con dispositivos iOS 7) entregó notifications push a iOS 7.3 sin problemas?

Dado que son solo advertencias, todavía puedo comstackr bien, pero prefiero no enviar el código que está mal.

Edit: envié un correo electrónico a google y dijeron que las personas más importantes lo searchán. Mientras tanto, si estás leyendo esto y te molesta la advertencia, quizás también envíes un correo electrónico para que te animen a lidiar con eso.

Esto solo significa que una de las bibliotecas (Protocol Bufferers aquí) GCM depende de fue construida para 8.3 aunque es compatible con la versión min SDK de GCM es decir 7.0. XCode 7 es simplemente más severo y lo reporta como una advertencia, pero siempre estaba allí simplemente no se informó de versiones anteriores.

En general, esto es inofensivo, todo debería funcionar bien. Además, no hay mucho que pueda hacer a less que Google parche GCM al crear todas sus dependencies con la versión min SDK (7.0).

En realidad, significa que el objective mínimo de implementación de la biblioteca incluida fue de 8.3 y al vincularlo con un menor objective de implementación mínima se produce esta advertencia.

La biblioteca no admite oficialmente objectives inferiores a 8.3 en este caso. Si bien la vinculación de esta biblioteca al destino con el objective de deployment mínimo de Ower seguirá funcionando, es posible que se produzcan fallas en el time de ejecución, si se ejecuta un código único de 8.3 en un dispositivo con un sistema anterior a 8.3.

Hay una razón por la cual los desarrolladores establecen 8.3 como el objective mínimo y esta advertencia NO debe ser ignorada. Puede ser inofensivo en este caso, pero no es necesariamente inofensivo en otros casos.

Para corregir estas advertencias, use una versión anterior de la biblioteca o configure su objective de implementación mínima en 8.3.

Mi manera de solucionar:

  1. Marque "Destino de deployment" es igual a Podfile "Plataforma"
  2. Eliminar DerivedData (/ Users / yourUser / Library / Developer / Xcode)
  3. Instalación de pod (terminal)
  4. Proyecto de limpieza / construcción

Ps puede agregar más información si es necesario.

En destinos / Configuración de creación / Vinculación / Otros indicadores de enlace , agregue

-w

Silencio la advertencia para mí.

Para su información, la última versión de los pods relevantes parece haber solucionado este problema.

Específicamente, parece que fue la actualización de GoogleInterchangeUtilities de 1.0.0 a 1.1.0 que hizo el truco.

Si ves esto, ¡una "actualización de pod" debería hacerlo todo mejor!

En mi caso, la razón fue que acabo de actualizar los pods luego cambié el deployment target para que bajara antes de lo que estaba antes y recibí tales advertencias. Al ejecutar la actualización de pod resuelve el problema.