Avertissements Xcode 7: le file object a été créé pour une nouvelle version d'iOS plutôt que d'être lié

J'ai récemment embedded Google Cloud Messaging dans une application ciblant iOS 7 et iOS 8. J'ai juste saisi Xcode 7 beta 4 pour démarrer sur iOS 9, et maintenant je reçois une erreur de l'éditeur de liens:

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) 

et une poignée plus comme ça tout pour les parties de libProtocolBuffers.a.

Cela signifie-t-il que iOS 8.3 est requirejs pour utiliser la bibliothèque GCM? Si c'est le cas, pourquoi Xcode 6 a-t-il craché avec bonheur du code qui (par tous les aspects dans mes tests avec des appareils iOS 7) a envoyé des notifications push à iOS 7.3 sans problème?

Étant donné que ce ne sont que des avertissements, je peux tout de même comstackr correctement, mais je préfère ne pas expédier de code erroné.

Edit: J'ai envoyé un e-mail à google et ils ont dit que les meilleurs vont se pencher dessus. En attendant, si vous lisez ceci et dérangé par l'avertissement, peut-être aussi par courriel afin qu'ils soient encouragés à s'en occuper.

Cela signifie simplement que l'une des bibliothèques (Protocol Buffers ici) GCM dépend de a été construit pour 8.3, bien qu'il soit compatible avec la version min sdk de GCM ie 7.0. XCode 7 est juste plus sévère et le signale comme un avertissement mais il était toujours là juste ne pas être rapporté par les versions précédentes.

Globalement, c'est juste inoffensif, tout devrait bien fonctionner. De plus, il n'y a pas grand chose à faire à less que Google corrige GCM en construisant toutes ses dependencies avec la version min sdk (7.0).

Cela signifie en fait que la cible de deployment minimale de la bibliothèque incluse est de 8,3 et que la binding avec la cible de deployment minimale inférieure produit cet avertissement.

La bibliothèque ne prend pas officiellement en charge les cibles inférieures à 8,3 dans ce cas. Bien que lier cette bibliothèque à la cible avec la cible de deployment minimale fonctionnera toujours, elle peut provoquer des plantages lors de l'exécution, si un code uniquement 8.3 est exécuté sur un périphérique qui exécute un système plus ancien que la version 8.3.

Il y a une raison pour laquelle les développeurs définissent 8.3 comme cible minimale et cet avertissement ne doit PAS être ignoré. Il pourrait être inoffensif dans ce cas, mais il n'est pas nécessairement inoffensif dans d'autres cas!

Pour corriger ces avertissements, utilisez une version antérieure de la bibliothèque ou définissez votre cible de deployment minimale sur la version 8.3.

Ma façon de réparer:

  1. Check "Deployment Target" est incroyablement similaire à Podfile "Platform"
  2. Supprimer DerivedData (/ Users / yourUser / Bibliothèque / Developer / Xcode)
  3. Pod installer (Terminal)
  4. Projet Clean / Build

Ps Peut append plus d'informations si nécessaire.

Dans les cibles / Paramètres de construction / Liaison / Autres indicateurs de binding , ajoutez

-w

silence l'avertissement pour moi.

Pour info, la dernière version des pods concernés semble avoir résolu ce problème.

Plus précisément, il semble que ce soit la mise à niveau de GoogleInterchangeUtilities de 1.0.0 à 1.1.0 qui a fait l'affaire.

Si vous voyez cela, une "mise à jour de pod" devrait rendre le tout meilleur!

Dans mon cas, la raison en était que je venais juste de mettre à jour les pods puis de modifier la deployment target pour qu'elle soit inférieure à ce qu'elle était auparavant et qu'elle reçoive de tels avertissements. L'exécution de la mise à jour de pod résout à nouveau le problème.