web-dev-qa-db-fra.com

Xcode 9, Carthage. Erreur de connexion iTunes: «Ensemble non valide - Instrumentation LLVM non autorisée»

Aujourd'hui, j'ai téléchargé Xcode 9 et apporté les modifications nécessaires à la compilation de mon application. 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 erreur.

Je passe ensuite l'e-mail suivant d'Apple:

Cher développeur,

Nous avons découvert un ou plusieurs problèmes avec votre livraison récente pour "KiteSpotter - Prévisions de vent et météo de Kitesurf". 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.

Une fois ces problèmes corrigés, vous pouvez ensuite redistribuer le binaire corrigé.

Cordialement,

L'équipe App Store

Je suis allé et j'ai désactivé la couverture du code pour ma cible et ma cible de cabosses de cacao, qui était le seul paramètre pertinent que j'ai pu trouver:

enter image description here

J'ai de nouveau soumis la demande et j'obtiens la même erreur.

Sur mon projet, j'utilise Carthage, qui a plus de 15 dépendances. À la recherche d'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 cela est à l'origine du problème.
  • Quelqu'un d'autre a-t-il fait face à ce problème et l'a réglé? Les cadres de Carthage ont-ils créé le problème ou autre chose?
28
zirinisp

La solution pour automatiser la définition de la couverture du code sur false pour toutes les dépendances consiste à exécuter la commande suivante sur le terminal (veuillez vous rendre 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'

Cela définira la couverture du code sur NON et iTunes connect ne se plaindra pas.

La séquence pour que tout fonctionne est la suivante

  • Courir carthage update --platform iOS --no-use-binaries --no-build. Cela mettra à jour et téléchargera 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 sur NO
  • Maintenant que tout est en place, exécutez carthage build --platform iOS. Cela va tout construire avec une couverture de code à NON

Vous pouvez désormais archiver et télécharger sur iTC.

La commande a été donnée par https://github.com/gunterhager , donc le mérite lui revient


Comme alternative pour les utilisateurs de fastlane , ajoutez ce qui suit à votre fichier fastlane, 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
34
zirinisp

Comme solution rapide, exécutez ces commandes dans 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 créera rien.

  • grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g' Cela définira la couverture du code sur NO.

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

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

Les gens sympas du projet Carthage travaillent déjà sur un correctif plus convivial, alors assurez-vous de vérifier les versions là-bas.

13
Gunter Hager

J'ai également eu la même erreur de Xcode 9.1 même si j'ai mis à jour Carthage vers la dernière version https://github.com/Carthage/Carthage/releases J'ai échoué lors du téléchargement de la construction sur iTunes

enter image description here

A fonctionné pour moi de cette façon: -

Si vous avez mis à jour votre Xcode vers 9.1 alors

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

Installer .pkg et

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

et

allez ensuite à votre projet Build Settings trouver Enable Code Coverage Support modifiez ce paramètre de Yes à No

enter image description here

Ensuite, archivez et téléchargez sur AppStore. Votre build sera ready. Happy!

enter image description here

3
Sanju

Mettez simplement à jour Carthage vers la version 0.26.0 ou supérieur, puis exécutez le carthage update commande à nouveau.

2
arturgrigor