Tag Archives: AppStore

ITMS-90668 : The executable file contains incomplete bitcode

Comme toute personne qui développe des applications mobiles iOS avec Xamarin, vous utiliserez certainement à un moment donné des SDKs tierces (réseaux sociaux, régies publicitaires, etc…).

Une fois votre application développée, viendra le moment de la soumettre sur l’AppStore et dans la plupart des cas cela fonctionnera sans aucun problème. Mais il arrivera parfois que des soucis surviennent.

C’est ce qui m’est arrivé il y a 15 jours environ pendant la phase de soumission sur l’AppStore, quand j’ai reçu un message d’erreur comme celui visible ci-dessous (cette capture ne correspond pas à mon application mais la source d’erreur est la même).

Ce message indique qu’un SDK utilisé dans l’application pose un souci car il contient un “bitcode incomplet” alors que très probablement d’autres SDKs dans la même application utilisent pour leur part un bitcode complet. Apple refuse apparemment d’accepter les applications qui mixent les deux.

Après de multiples recherches sur Internet qui traitent dans la majorité des cas de la résolution de cette erreur pour les gens travaillant sur Xcode, je suis tombé sur cette page sur l’outil de suivi de bugs de Xamarin qui fait état d’un problème connu.

La solution de contournement (workaround / fix) évoqué dans le ticket fonctionne parfaitement.

Pour cela, il suffit d’éditer le fichier .csproj de votre application Xamarin.iOS et d’ajouter les lignes suivantes à la fin, juste avec la balise </project> :

<Target Name="BeforeCodesign">
  <Exec Command="$(_SdkDevPath)\Toolchains\XcodeDefault.xctoolchain\usr\bin\bitcode_strip -r %(_Frameworks.FullPath) -o %(_Frameworks.FullPath)" />
</Target>

Ces quelques lignes permettent de supprimer tout le bitcode inutiles des SDKs embarqués dans votre application au moment où celle-ci est compilée et juste avant d’appliquer la signature du package.

Une fois ces quelques lignes ajoutées et l’application recompilée, la soumission sur l’AppStore ne devrait plus poser aucun souci.

Advertisements