web-dev-qa-db-fra.com

Xcode essayant de faire correspondre l'ID de l'ensemble de structures lors du téléchargement de l'application iOS vers l'App Store

Après 4 mois de développement de ma première application iOS, il est temps de la soumettre au App Store. J'ai créé l'application dans iTunes Connect, rempli tous les détails, mis en place le Bundle ID correct dans Connect et Xcode. Cependant, je me suis battu ces 3 derniers jours pour tenter de résoudre ce problème étrange. Il semble que xcode essaie de télécharger des frameworks Cocoapods, pas mon application principale.

Après l'archivage, je suis allé à Window > Organizer > Validate.... Je vois l'écran suivant:

 enter image description here

L'erreur:

 enter image description here

(Pour les utilisateurs: aucun enregistrement d'application approprié n'a été trouvé. Vérifiez que l'identifiant de l'ensemble "org.cocoapods.Alamofire" est correct).

Le message d'erreur indique qu'il tente de faire correspondre un Bundle ID en fonction du nom d'un framework, et non de mon propre bundle (par exemple com.organization.AppName). Je ne peux trouver de réponses nulle part. J'ai essayé de faire ce qui suit dans ma Podfile (qui a use_frameworks!), Ainsi que mes différentes combinaisons de conf, mais sans succès.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|

      config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
      config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
      config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
    end
  end
end

 enter image description here

 All codesigning set to automatic

Des questions:

  • Les étapes que je fais sont-elles correctes?
  • Pourquoi Xcode essaie-t-il de faire correspondre un framework's bundle id au lieu de mon application principale?
  • Comment puis-je résoudre ce problème pour enfin soumettre mon application?

EDIT 1: J'ai réussi à surmonter ce problème, mais cela a posé un autre problème plus tard. Je n'ai toujours pas de solution. Fondamentalement, Alamofire Pod (de Cocoapods) a un identifiant de paquetage com.xxx.Alamofire. Je l'ai changé en com.xxx.myAppName. Avec cela, j'ai pu l'envoyer à l'App Store, mais je ne peux pas installer l'application sur mon iPhone à partir de TestFlight en raison de l'erreur suivante:

4/22/16, 12:50:29 AM itunesstored[124]: [ApplicationWorkspace]: Failed to install application: com.xxx.myAppName; /var/mobile/Media/Downloads/5927832272594571027/-6969961974973998640; Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=DuplicateIdentifier, ErrorDescription=The parent bundle has the same identifier (com.xxx.myAppName) as sub-bundle at /private/var/installd/Library/Caches/com.Apple.mobile.installd.staging/temp.IVHCuO/extracted/Payload/MyApp.app/Frameworks/Alamofire.framework}
23
Alex

Après avoir passé pas mal de temps avec ça, j'ai réussi à le faire fonctionner. Au fond, seul Alamofire présentait ce problème. Voici ce que j'ai fait:

  1. Dans le Navigator, cliquez sur Pods.
  2. Sous Targets, vous verrez tous les cadres utilisés par votre application.
  3. Cliquez sur Alamofire (ou sur le framework à l'origine du problème).
  4. Editez l'identifiant Bundle. Si votre identifiant de bundle d'application est com.company.appName, écrivez com.company.appName.Alamofire dedans.

J'ai essayé com.company.appName pour le framework, com.company.Alamofire, rien n'a fonctionné.

5
Alex

Je viens de rencontrer ce problème avec l’erreur suivante qui s’est affichée lors d’une tentative de téléchargement sur l’App Store.

L'opération iTunes Store a échoué.

Aucun enregistrement d'application approprié n'a été trouvé. Vérifiez que l'identifiant de votre paquet 'org. cocoapods . Alamofire' est correct.

Nous avons rencontré ce problème lorsque nous avons tenté de télécharger (tout en utilisant des Cocoapods) et que nous n’avons pas trouvé de solution, nous avons pris l’action radicale de supprimer complètement les Cocoapods de notre projet et ajouté manuellement chaque module en tant que cadre.

Et ...... le téléchargement sur l'App Store a toujours échoué avec essentiellement la même erreur! ????

L'opération iTunes Store a échoué.

Aucun enregistrement d'application approprié n'a été trouvé. Vérifiez que l'identifiant de votre paquet 'org. alamofire . Alamofire' est correct

Cela ressemble donc probablement à une erreur liée à l'utilisation de la structure au sein même de Xcode.

Constatant que cela n’était pas nécessairement causé par les Cocoapods, nous avons décidé de continuer à utiliser des Cocoapods et avons proposé les étapes suivantes pour résoudre ce problème.

Le correctif:

Notre projet contient 2 cibles (ignorer les cibles de tests unitaires, etc.). 1 pour l'application (appelons-le MyApp) et une autre qui contient la couche réseau et d'autres fonctionnalités non spécifiques à l'application (appelons ceci MyAppKit).

  1. Ajoutez CFBundlePackageType (également appelé Bundle OS Type code) au Info.plist de MyApp et définissez-le sur APPL.
  2. Assurez-vous que le projet MyApp et la cible MyApp ont le paramètre de construction Always Embed Swift Standard Libraires à Yes.
  3. Assurez-vous que le MyAppKit cible a le paramètre de construction Always Embed Swift Standard Libraires à No.

Nous cherchons toujours à savoir exactement ce qui se passe ici, mais nous pensons que cela pourrait être utile à quiconque en fait actuellement l'expérience.

4
Simo

Je recevais cette erreur en essayant de soumettre l'application à iTunes Connect: "Aucun enregistrement d'application approprié n'a été trouvé. Vérifiez que l'identificateur de l'ensemble" org.cocoapods.Alamofire "est correct".

Je l'ai finalement résolu en changeant le code de type Bundle OS en APPL.

4
neilge

Cela fonctionne parfaitement pour moi. Je viens de localiser Info.plist en cliquant avec le bouton droit de la souris sur open en tant que "code source" et j'ai changé <key>CFBundlePackageType</key> en chaîne APPL

<key>CFBundlePackageType</key>
<string>APPL</string>
4
Geovanny Buitrago

Récemment, j’avais également le même problème lorsque je publiais l’application à l’aide de cocoapodes . C’était un projet Objective-C et elle intégrait des modules en tant que cadres dynamiques.

C'est déjà bug rapporté .

Je recommande donc de suivre 2 alternatives pour contourner ce problème:

  • Utilisez la bibliothèque statique au lieu du cadre dynamique . Pour cela, vous pouvez commenter # use_frameworks! ligne dans votre fichier pod.

  • Si vous avez besoin d'utiliser framework, vous pouvez essayer les étapes ci-dessous:

    1. Ajoutez votre framework en tant que binaire incorporé dans la cible Xcode.

    2. Dans les phases de construction de votre cible, ajoutez un script d’exécution:

Exemple de script:

# Stripping framework only for archive
if [ "$ACTION" = "install" ]; then

    FRAMEWORK_NAME="Framework name"
    SCRIPT_FILE_NAME="strip-framework.sh"

    # Set working directory to product’s embedded frameworks
    cd  "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/${FRAMEWORK_NAME}.framework"

    # Get architectures for current file
    ARCHS="$(lipo -info "${FRAMEWORK_NAME}" | rev | cut -d ':' -f1 | rev)"
    for Arch in $ARCHS; do
        if ! [[ "${VALID_ARCHS}" == *"$Arch"* ]]; then
        # Strip non-valid architectures in-place
        lipo -remove "$Arch" -output "$FRAMEWORK_NAME" "$FRAMEWORK_NAME" || exit 1
        fi
    done

    echo "Framework was successfully stripped with unsupported architectures"

fi

# Removing script from framework folder
if [ -f ${SCRIPT_FILE_NAME} ]; then
    rm -rf "${SCRIPT_FILE_NAME}"
fi

Remarque: veuillez remplacer votre nom de structure dans ce script !, vous devez vous assurer que ce fichier de script s'appelle "strip-framework.sh" au niveau supérieur du répertoire de la structure.

Les frameworks tiers jamais signés par les fournisseurs et son devoir de consommateur ..__ Ainsi, lorsque vous archivez, il signe vos frameworks avec votre bundle d'applications. Mais après cela, Application Loader considère votre identifiant de bundle comme un framework. Sa chose étrange pour le moment.

Après 2 jours de travail, je pouvais enfin publier mon application.

Même si vous pouviez soumettre en faisant cela, il ne sera jamais installé sur les appareils.

Enfin, j'ai eu une solution parfaite et découvert la raison. C'est ce qui se passe parce que vos frameworks tiers ont quelques problèmes . Par exemple, dans mon cas, le framework Quickblox n'a jamais supporté bitcode encore. J'ai donc dû désactiver le bitcode dans les paramètres de construction pour le cible principale et cadres totalement. Cela corrigera votre problème à coup sûr.

S'il vous plaît examiner cette capture d'écran:  Disable Bitcode J'espère que cela va vous aider les gars . Salut!

1
softninja

Si votre apptitle comporte une barre oblique "/" habituelle, xcode n'a pas réussi à la signer et pense que je télécharge le premier framework org.cocoapods. ***

Ce que j'ai fait - changé de barre oblique en symbole similaire

(première barre oblique, suivante - autre symbole Unicode: ∕/)

0
Eugene Pinchuk

Dans mon cas, j'ai dû supprimer les paramètres du profil d'approvisionnement du sous-projet Pods  enter image description here

0