Je vais ajouter mes 2 cents ici (de manière moins effrayante :-). J'ai rencontré un certain nombre de bibliothèques grasses de fournisseurs qui (pour une raison quelconque) ne fonctionnent pas de la manière habituelle en les ajoutant au Frameworksrépertoire tel que documenté par Apple. La seule façon dont nous avons pu les faire fonctionner est en tirant vers la .framekworkdroite dans le répertoire du projet et en liant le Embedded Frameworkset Link Binary with Librariesmanuellement dans les paramètres de construction. Cela semble avoir fonctionné sans aucun problème, cependant, comme avec n'importe quelle bibliothèque de graisse, ils sont livrés avec les architectures de simulateur étrangères i386 et x86_64avec les armarchitectures.
Un moyen rapide de vérifier les architectures de la bibliothèque de graisses est
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Qui devrait cracher une sortie quelque chose comme ça
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Cela confirme que vous aurez besoin de "couper la graisse" (à savoir i386& x86_64) de votre cadre avant le téléchargement iTunesConnect Archival, ce qui ne permet pas ces architectures (car elles ne sont pas prises en charge pour iOS).
Maintenant, toutes les réponses (ou au moins certaines des réponses) ici fournissent ces merveilleux scripts d'exécution qui, j'en suis sûr, fonctionnent très bien, mais seulement si votre Framework réside dans le Frameworksrépertoire. Maintenant, à moins que vous ne soyez un drogué de script shell, ces scripts sans modifications ne fonctionneront pas pour le scénario que j'explique ci-dessus. Cependant, il existe un moyen très simple de se débarrasser des architectures i386& x86_64du framework.
Ouvrez le terminal dans le répertoire de votre projet.
Changez le répertoire directement dans le .framekwork, comme
cd YourProjectDir/YourProject/YourLibrary.framework
Exécutez la série de commandes comme indiqué ci-dessous -
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Quelques points à noter ici - lipo -removedoivent être effectués une fois pour chaque architecture à supprimer. lipone modifie pas le fichier d'entrée, il ne produit qu'un fichier, vous devez donc exécuter lipo -removeune fois pour x86_64et i386. Les commandes ci-dessus le font simplement en renommant d'abord l'exécutable, puis en supprimant éventuellement les arches souhaitées, puis en nettoyant les fichiers restants. Et c'est tout, vous devriez maintenant voir une coche verte dans le téléchargement d'archivage Application Loader vers iTunesConnect.
Choses à garder à l'esprit : Les étapes ci-dessus ne doivent être effectuées que pendant la construction de la production, car .frameworkelles seront supprimées des architectures du simulateur, les constructions sur les simulateurs cesseront de fonctionner (ce qui est prévu). Dans un environnement de développement, il ne devrait pas être nécessaire de supprimer les architectures du .frameworkfichier, car vous voulez pouvoir tester à la fois sur le simulateur et sur un périphérique physique. Si votre bibliothèque de matières grasses réside dans le Frameworksdossier du projet, veuillez consulter la réponse acceptée.