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 Frameworks
répertoire tel que documenté par Apple. La seule façon dont nous avons pu les faire fonctionner est en tirant vers la .framekwork
droite dans le répertoire du projet et en liant le Embedded Frameworks
et Link Binary with Libraries
manuellement 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_64
avec les arm
architectures.
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 Frameworks
ré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_64
du 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 -remove
doivent être effectués une fois pour chaque architecture à supprimer. lipo
ne modifie pas le fichier d'entrée, il ne produit qu'un fichier, vous devez donc exécuter lipo -remove
une fois pour x86_64
et 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 .framework
elles 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 .framework
fichier, 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 Frameworks
dossier du projet, veuillez consulter la réponse acceptée.