28 votes

Xcode 9, Carthage. Erreur de connexion iTunes : "Invalid Bundle - Disallowed LLVM instrumentation" (paquet non valide - instrumentation LLVM non autorisée)

Aujourd'hui, j'ai téléchargé Xcode 9 et effectué les modifications nécessaires pour que mon application soit compilée. L'application se compile et s'exécute localement sans aucun problème.

En utilisant Xcode 9, je l'ai téléchargé sur l'App Store. Le téléchargement a réussi sans aucune erreur.

Je reçois ensuite l'e-mail suivant d'Apple :

Cher développeur,

Nous avons découvert un ou plusieurs problèmes avec votre récente livraison pour "KiteSpotter - Kitesurf wind and weather forecast". Pour traiter votre livraison, les problèmes suivants doivent être corrigés :

Invalid Bundle - Instrumentation LLVM non autorisée. Ne soumettez pas d'applications avec l'instrumentation de profilage LLVM ou la collecte de couverture activée. Désactivez le profilage LLVM ou la couverture de code, reconstruisez votre application et soumettez-la à nouveau. soumettez à nouveau votre application.

Une fois que ces problèmes ont été corrigés, vous pouvez alors redélivrer le binaire corrigé.

Regards,

L'équipe de l'App Store

J'ai désactivé la couverture du code à la fois pour ma cible et pour la cible des cabosses de cacao, ce qui était le seul paramètre pertinent que j'ai pu trouver :

enter image description here

J'ai soumis à nouveau la demande et je reçois la même erreur.

Dans mon projet, j'utilise Carthage, qui a plus de 15 dépendances. En cherchant une solution, j'ai trouvé que tous les projets doivent être mis à jour avec le paramètre ci-dessus.

  • Existe-t-il une solution pour automatiser ce paramètre pour tous les frameworks, si c'est la cause du problème.
  • Quelqu'un d'autre a-t-il rencontré ce problème et l'a-t-il résolu ? Les cadres de Carthage ont-ils créé le problème ou quelque chose d'autre ?

34voto

zirinisp Points 984

La solution pour automatiser le réglage de la couverture de code à false pour toutes les dépendances est d'exécuter la commande suivante sur le terminal (veuillez aller dans le répertoire de votre projet) :

grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'

La couverture du code sera ainsi réglée sur NON et iTunes connect ne se plaindra pas.

La séquence à suivre pour que tout fonctionne est la suivante

  • Ejecutar carthage update --platform iOS --no-use-binaries --no-build . Cela va mettre à jour et télécharger toutes les dépendances. Lorsque Carthage commence à compiler, vous pouvez appuyer sur ctrl+c pour annuler.
  • Exécutez la commande ci-dessus pour définir la couverture du code à NO
  • Maintenant que tout est en place, exécutez carthage build --platform iOS . Cela va tout construire avec une couverture de code à NO

Vous pouvez maintenant archiver et télécharger sur iTC.

L'ordre a été donné par https://github.com/gunterhager donc le mérite lui revient


Comme solution de rechange pour utilisateurs de la fastlane ajoutez ce qui suit à votre fichier fastlane, ce qui automatisera tout :

  desc "Update Carthage"
  lane :update_carthage do
    carthage(
      command: "update",       # One of: build, bootstrap, update, archive. (default: bootstrap)
      use_binaries: false,         # Check out dependency repositories even when prebuilt frameworks exist
      no_build: true,  # When bootstrapping Carthage do not build
      platform: "iOS"  # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
    )
    sh("grep -lR 'codeCoverageEnabled' --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = 'YES'/codeCoverageEnabled = 'NO'/g'")
    carthage(
      command: "build",       # One of: build, bootstrap, update, archive. (default: bootstrap)
      platform: "iOS"  # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
    )
  end

13voto

Gunter Hager Points 726

Comme solution rapide, exécutez ces commandes dans le Terminal (assurez-vous d'aller dans le dossier racine de votre projet) :

  • carthage update --platform iOS --no-use-binaries --no-build Cela mettra à jour vos dépendances, mais ne construira rien.

  • grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g' La couverture du code sera ainsi fixée à NO .

  • carthage build --platform iOS Cela permettra finalement de construire tous les frameworks sans couverture de code.

Vous pouvez maintenant archiver votre projet et le télécharger sur iTunes Connect.

Les gentilles personnes du Carthage travaillent déjà sur un correctif plus convivial, alors n'oubliez pas de consulter les communiqués de presse à ce sujet.

3voto

Sanju Points 804

J'ai également obtenu la même erreur à partir de Xcode 9.1, bien que j'aie mis à jour Carthage à la dernière version. https://github.com/Carthage/Carthage/releases Je n'ai pas réussi à télécharger la compilation sur iTunes.

enter image description here

Ça a marché pour moi de cette façon :-

Si vous avez mis à jour votre Xcode vers 9.1 puis

Mettez à jour votre carthage.pkg téléchargement à partir de https://github.com/Carthage/Carthage/releases

Installer .pkg y

Donnez carthage update dans Terminal en faisant référence à votre projet

et

puis aller à votre projet Build Settings trouver Enable Code Coverage Support changer ce paramètre de Yes a No

enter image description here

Ensuite, archivez et téléchargez vers AppStore . Votre construction sera ready . Happy !

enter image description here

2voto

arturgrigor Points 1850

Juste une mise à jour Carthage à la version 0.26.0 ou plus, puis exécutez le carthage update de nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X