web-dev-qa-db-fra.com

Utilisation non publique de l'API: l'application contient un ou plusieurs fichiers binaires corrompus.

Je suis vraiment frustré par ce qui se passe avec les téléchargements de nouvelles versions d'applications iOS. Voici l'histoire.

À la date du 25 janvier 2018, nous avons téléchargé la nouvelle version 3.3.27 numéro de version 1.0. Ce processus avec succès et disponible sur vol-test pour les tests. Après cela, nous avons trouvé un problème et le 26 janvier 2018, nous avons résolu le problème et chargé de télécharger la nouvelle version 1.1 et nous avons reçu un e-mail d'iTunes Connect.

Cher développeur,

Nous avons découvert un ou plusieurs problèmes liés à votre livraison récente concernant "appname". Pour traiter votre livraison, les problèmes suivants doivent être corrigés:

Utilisation non publique de l'API:

The app contains one or more corrupted binaries. Rebuild the app and resubmit.

Si les noms de méthode dans votre code source correspondent aux API privées Apple énumérés ci-dessus, modifier vos noms de méthodes vous aidera à empêcher cette application d'être signalé dans les soumissions futures. De plus, notez que celui ou plusieurs des API ci-dessus peuvent être situés dans une bibliothèque statique qui était inclus avec votre application. Si c'est le cas, ils doivent être supprimés.

Si vous pensez que ce message a été envoyé par erreur et que vous n’avez que Utilisez les API publiées par Apple conformément aux instructions, envoyez le l'identifiant Apple à neuf chiffres de l'application, ainsi que des informations détaillées sur les raisons pour lesquelles vous pensez que les API ci-dessus ont été mal marquées, à [email protected]. Pour plus d'informations, visitez le

Pendant que je valide la construction avant de téléverser son succès:

 enter image description here

Pendant que je télécharge une application, j'obtiens le succès suivant:

 enter image description here

Dans le courrier, je n’ai pas reçu d’informations appropriées, c’est le nom d’un fichier binaire ou d’une structure corrompue. Quelle est la méthode que nous avons utilisée pour télécharger les mises à jour 100 de cette application avant le 25 janvier, tout est bon et acceptable.

Ensuite, essayez les modifications suivantes:

  1. Reconstruisez l'application et soumettez-la à nouveau avec le même courriel.
  2. Désinstallez Xcode9.2 et installez à nouveau le même courrier électronique.
  3. Supprimez les modifications et téléchargez le numéro de version 1.0 à nouveau avec le même courrier électronique.
  4. Changez de Mac et essayez de télécharger une nouvelle version du même email.
  5. Essayez de télécharger l'ancienne version qui vit avant et encore même emai

Nous avons envoyé un courrier électronique à iTunes Connect Review mais, depuis 3 jours, nous n'avons reçu aucune réponse de leur part. Je fais des recherches et à partir du 26 janvier, de nombreux utilisateurs sont confrontés à ce type de problème lorsqu'ils soumettent leur candidature.

Si quelqu'un connaît cette solution et qui fait face à ce genre de problème dans le passé ou récemment, aidez-nous

11
Nitin Gohel

Il n’existe pas une seule solution à ce problème. Apple ne mentionne plus rien au sujet de ses erreurs ou de ses actualités non valides sur son compte officiel, ses forums ou son site officiel pour les développeurs. Même s'ils ne sont pas une réponse de votre email. 

Certains problèmes sont résolus par BitCode, certains résolvent ce problème pour la mise à jour PODFILE, certains résolvent ce problème en supprimant un ancien cadre Swift utilisé dans le projet.

Mais finalement, j'obtiens une solution qui fonctionne pour moi. Quand j'ai construit le projet, j'ai trouvé un avertissement sur le panneau latéral gauche de Xcode comme suit.

 enter image description here

Je pense que Apple a maintenant supprimé l’ancien support Swift, donc si votre projet utilise une classe ou un podfile Swift, nous devons mettre à jour Swift 4.

Une fois la conversion à Swift 4 terminée, je reçois l’avertissement suivant:

L'utilisation de l'inférence Swift 3 @objc en mode Swift 4 est obsolète . Veuillez adresser les avertissements d'inférence @objc obsolètes, tester votre code avec l'enregistrement «Utilisation de l'inférence obsolète Swift 3 @objc» activé, et puis désactivez l'inférence en modifiant le build .__ "Swift 3 @objc Inference". paramétré sur "Par défaut" pour la cible "appname".

Pour résoudre cet avertissement, j'utilise le lien suivant L'utilisation de l'inférence Swift 3 @objc en mode Swift 4 est obsolète? et dans la classe Swift, j’utilisais @objc avant la déclaration publique.

En outre, je passe en revue tout le code source et supprime la bibliothèque inutilisée de podfile et la classe du projet.

par dessus, je résous ce problème et après le téléchargement de la 13ème version finalement acceptée.

2
Nitin Gohel

Après de nombreuses investigations sur cette partie, nous avons enfin trouvé le problème: Il semble qu'Apple ait attribué cette erreur aux applications prenant en charge les versions 32 et 64 bits.

Apple a donné ce rappel pour Mac Appstore, mais il semble que les applications iOS soient également affectées.

Une solution pour cela consiste donc à prendre en charge le bitcode OR pour supprimer la prise en charge des périphériques 32 bits en supprimant la prise en charge de ARMV7 et ARMV7S, ou des bâtiments ci-dessous de Valid Architectures. Cela signifie que votre application fonctionnera uniquement sur l'iPhone 5S et supérieur. J'espère que ça aidera quelqu'un.

Merci et bon codage!

4
Andrei Neag

Nous avons trouvé 2 solutions à ce problème. Supprimez le support 32 bits, qui a été mentionné ci-dessus. Et supprimez l'utilisation de CommonCrypto. Nous avons remplacé CommonCrypto par CryptoSwift ( https://github.com/krzyzanowskim/CryptoSwift ).

Nous avons choisi de remplacer CommonCrypto car nous ne voulions pas perdre nos utilisateurs 32 bits (iPhone4S, 5 et 5C).

0
Beto Trevisani