29 votes

Qu'est-ce que libswiftRemoteMirror.dylib et pourquoi est-il inclus dans mon bundle d'application?

J'ai une application iOS qui j'ai récemment opté pour Xcode 8. Dans le cadre de ce que nous avons changé swift 2.2 à 2.3 (swift 3 viendra plus tard).

J'ai un système automatisé de construire des pipelines, essentiellement exécute xcodebuild pour produire une version binaire sur une machine de compilation, et après j'ai trié tout ça (Xcode 8 automatique de la signature de code vraiment vis tout en haut), maintenant quand je télécharge mon application sur iTunes connect, il échoue avec ce message d'erreur:

ERREUR IMT-90171: "Invalid Structure de Faisceau - Le fichier binaire 'MyApp.app/libswiftRemoteMirror.dylib " n'est pas autorisée. Votre application ne peut pas contenir des exécutables autonomes ou des bibliothèques, autres que les CFBundleExecutable de prise en charge des faisceaux. Reportez-vous à la Bundle Guide de Programmation à l' https://developer.apple.com/go/?id=bundle-structure pour plus d'informations sur l'application iOS structure de faisceau."

Bien sûr, si j'ai décompresser le fichier .fichier ipa et un coup d'oeil, il y a libswiftRemoteMirror.dylib assis là.

Si j'archive/export pour iTunes via Xcode, puis il produit une application bundle qui n'ont pas d' libswiftRemoteMirror.dylib, cependant toutes les autres versions de mon application ne semble avoir. Même juste faire une version de débogage dans Xcode, puis, regardant la sortie montre que libswiftRemoteMirror.dylib est assis dans mon application bundle, indiquant que Xcode lui-même est certainement le mettre là, pas n'importe quelle partie de ma génération automatique de script.

Qu'est-ce que ce fichier, pourquoi est-il mis là, et que dois-je faire à ce sujet? Je peux modifier mon script pour supprimer ce fichier pour les versions release, mais je suis inquiète de ce que pourrait affecter le processus de signature de code. Je vais essayer quand même et voir ce qui se passe, mais on sent que ce n'est pas tout à fait la bonne chose à faire.

Tout conseil serait apprécié.

5voto

0a -archy Points 4224

Dans mon cas, je suis d'ERREUR IMT-90171 parce que je suis en utilisant des cadres.

"Non valide Structure de Faisceau - Le fichier binaire 'MyFramework.cadre/libswiftRemoteMirror.dylib'

(Je n'ai pas pour mon application.)

J'ai essayé de gym , mais il est resté coincé à xcrun. J'ai donc essayé de faire un rm -rf libswiftRemoteMirror dans la construction de la phrase (avec une mesure de l'exécution du script) pour chaque coutume cadre je l'ai et il est intéressant de noter que je n'ai pas casser quoi que ce soit: il a travaillé.

3voto

Fizker Points 684

J'ai rencontré le même problème après l'installation de Xcode 8, par la construction de la via shenzhen.

J'ai décidé de regarder Fastlane comme une alternative, et leur gym programme produit une ipa qui peut être soumise à Apple.

Il est assez facile pour moi de remplacer l'appel à ipa (shenzhen exécutable) avec un appel à l' gym, et le reste de mon build-et-télécharger des scripts travaillé sans modifications.

Si vous préférez construire directement, j'ai levé la suite de l' gym - fichier lisezmoi. Il produit un .xcarchive contenant un .app le fichier sans l' libswiftRemoteMirror.dylib. Je n'utilise pas ce genre de flux de moi-même, donc je ne peux pas dire comment vous devez procéder à partir de là.

xcodebuild \
  -scheme Scheme \
  -workspace Project.xcworkspace \
  -configuration 'Release' \
  -destination 'generic/platform=iOS' \
  -archivePath './Output.xcarchive' \
  archive

3voto

Orion Edwards Points 54939

Je n'ai jamais pu obtenir de la ligne de commande xcodebuild à jamais automatique de signature de code. Je suppose que parce que la version automatique de la machine s'exécute sous un autre compte qui est seulement accessible via SSH - Il n'a jamais eu "plein" de Xcode exécuter en tant que compte d'utilisateur et il n'a pas de certificats dans les trousseau de Connexion ou quelque chose comme ça.

Je ne voulais pas utiliser quelque chose comme shenzhen parce que je n'ai rien eu, mais de mauvaises expériences de ce genre de choses dans le passé. Xcode système de construction est compliquée et assez fragiles, sans avoir à ajouter en plus des scripts et des choses qui pourraient aller mal ou de la date.

Voici ce que j'ai fait pour résoudre le problème (c'est horrible, mais c'était la seule chose que j'ai pu trouver qui l'a fait fonctionner à la fin)

  1. Dans la version automatique de script, modifier l' .pbxproj , pour rechercher et remplacer Provisioning Style = Automatic; avec Provisioning Style = Manual;. Également remplacer iOS Developer avec iOS Distribution pour la signature du code de choses dans le même pbxproj fichier. Ces deux choses désactiver la signature

  2. Exécutez xcodebuild construire (mais pas d'archives) le projet de la même manière que dans l'Xcode7 . Xcode compile l'application et le signe, mais il n'est pas encore valide, car il contient libswiftRemoteMirror.dylib et aussi pour une raison quelconque n'a pas obtenu tous les droits au fichier

  3. Supprimer libswiftRemoteMirror.dylib à partir de l'app bundle (ce qui invalide la signature)

  4. Générer un Entitlements.plist dans l'app bundle dossier par l'extraction des droits de bits à partir du profil de configuration (Comme ce que BlackBerry SWSiOSResign.sh script n')

    1. Re-signe l'app bundle avec codesign --entitlements <file>

    2. À partir de là, utiliser une technique similaire à ce que l' bq/package_ipa.sh t et copier le SwiftSupport dossier, puis compresser le fichier en ipa.

Je ne pouvais pas l'utiliser réellement package_ipa.sh le fichier, j'ai besoin de ré-appliquer la même logique à la place parce que j'ai besoin de référence Swift_2.3.toolchain pour obtenir le SwiftSupport depuis que mon application est toujours swift 2.3 - pas XcodeDefault.toolchain (ce qui est rapide, 3)

Il semble que je devrais être en mesure d'utiliser xcodebuild --archive , en combinaison avec certains autres choses à éviter certaines de ces étapes. Je n'ai jamais pu obtenir que cela fonctionne sous Xcode7, mais je pourrais essayer de nouveau avec XC8 si j'ai le temps

2voto

Noushad Shah Points 21

Accédez simplement au paramètre de génération et faites comme si votre problème était résolu.

entrez la description de l'image ici

0voto

Kalpesh Muthe Points 3

Archivez simplement votre build à partir de Xcode, cliquez avec le bouton droit sur le fichier d'archive -> afficher dans le Finder -> cliquez avec le bouton droit -> afficher le contenu du package -> produit -> appliction -> copier le fichier .app générer une charge utile et télécharger à l'aide du chargeur d'application. Cela aide dans mon cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X