web-dev-qa-db-fra.com

Comment importer des frameworks tiers dans Xcode Playground?

Comment importer des frameworks tiers dans Xcode Playground?

Swift Playground a évidemment un mécanisme d'importation de framework car nous pouvons importer Cocoa, SpriteKit, et dans un OSX Playground, XCPlayground (XCPlayground semble absent d'iOS, bizarrement)

Ce que j'aimerais vraiment faire, c'est cacher le code de mon terrain de jeu et pouvoir montrer un exemple minimal. Des réflexions sur la façon de charger un Framework dans Swift aire de jeux?

Voir également:

(Cette question est différente car la demande consiste à utiliser un framework dans Playground plutôt que de simples fichiers Swift ordinaires)

45
Nate Murray

Modifié: à partir de la Bêta5, cela est désormais pris en charge lorsque le terrain de jeu fait partie de l'espace de travail qui crée le cadre en tant que cible. Il y a plus de détails sur le site Apple dev forums, mais j'espère que @Rick Ballard les ajoutera ici à sa réponse et cela devrait devenir la réponse définitive à cette question.

Ne faites plus ce qui suit!


Pour le court terme, bien qu'il n'y ait pas de solution prise en charge, si vous produisez un module/framework, vous pouvez le copier dans les SDK System/Library/Frameworks répertoire puis juste import <#Module#> de la même manière que vous importez des Frameworks système.

Pour un terrain de jeu OS X: /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks

Et pour iOS: /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks/

Mais avant de faire ça ... allez déposer un radar comme @Rick le dit dans sa réponse.

19
ikuramedia

Il n'existe actuellement aucun moyen pris en charge pour importer votre propre framework ou code d'application dans une aire de jeux, à moins de le coller dans l'éditeur de jeux. Nous sommes conscients qu'il s'agit d'une fonctionnalité très souhaitable, mais comme toujours, nous encourageons les gens à "voter avec bugreporter" sur bugreport.Apple.com

À l'heure actuelle, si vous essayez simplement de masquer le code à afficher dans un exemple, le pliage de code dans l'éditeur peut faire l'affaire.

Il est désormais possible d'importer vos propres frameworks dans une aire de jeux. Cela permet de partager du code entre vos applications et vos aires de jeux, qui peuvent à la fois importer vos frameworks. Pour ce faire, votre terrain de jeu doit se trouver dans le même espace de travail que le projet qui produit votre framework. Vous devez avoir déjà construit votre framework. S'il s'agit d'un framework iOS, il doit être construit pour une destination d'exécution 64 bits (par exemple iPhone 5s). Vous devez avoir un schéma actif qui construit au moins une cible (l'emplacement de construction de cette cible sera utilisé dans le chemin de recherche du framework pour le terrain de jeu). Votre préférence "Créer un emplacement" (dans les paramètres avancés "Emplacements") ne doit pas être définie sur "Héritage". Si votre framework n'est pas un Swift framework le paramètre de build "Defines Module" doit être défini sur "Yes". Une fois toutes ces conditions remplies, l'importation de votre framework fonctionnera dans une aire de jeux.

46
Rick Ballard

J'ai écrit un tutoriel couvrant l'importation de frameworks personnalisés en Beta 6

En bref, si vous avez votre terrain de jeu et votre framework dans le même projet ou espace de travail et que votre framework est conçu pour 64 bits (même pour iOS), ils fonctionnent très bien ensemble.

2
iHunter

Je l'ai résolu en copiant les frameworks construits dans le répertoire des produits construits, où Playgrounds dans l'espace de travail recherche également les frameworks. Remarque: vous devez également exécuter lipo et supprimer les architectures inutilisées des fichiers binaires FAT.

Les étapes nécessaires (en bref):

  • Créer une cible agrégée
  • Ajoutez une phase de script pour copier les frameworks de Carthage/Build/iOS/vers BUILT_PRODUCTS_DIR (J'utilise un script Swift dans l'exemple ci-dessous, mais vous pouvez également utiliser bash, Ruby python etc.)
  • Exécuter la cible agrégée Vous pouvez maintenant importer le ou les frameworks dans un Playground

De plus, vous pouvez tirer parti de la cible globale dans votre application:

  • Intégrez des frameworks à partir de BUILT_PRODUCTS_DIR, pas Carthage/Build/iOS /
  • Ajoutez une cible agrégée au schéma d'application pour rétablir les cadres après un nettoyage.

Voici un exemple de configuration de projet comme ci-dessus: https://github.com/richardnees/CarthagePlaygrounds

1
Richard Kruse Nees

source: http://qiita.com/ryokosuge/items/2551cd4faa9dca324342

S'il y a quelqu'un qui a encore du mal à comprendre comment s'y prendre après avoir lu la réponse acceptée, cela peut aider.

Ce n'est pas en anglais, donc je vais expliquer ici:

Utilisation de Carthage:

1: Configurez votre Cartfile à la racine du projet, ajoutez vos bibliothèques et exécutez:

carthage update --platform iOS --use-submodules

2: Assurez-vous que votre projet est enregistré en tant que Workspace. Dans la barre de menus Xcode: File> Save As Workspace. Arrêtez Xcode et rouvrez à partir du nouveau fichier .xcworkspace.

3: Ajoutez le fichier .xcodeproj De votre bibliothèque dans votre espace de travail: File> Add files to "your_workspace_name". Trouvez-le ensuite dans: ${SRCROOT}/Carthage/Checkouts/your_library_name/your_library_name.xcodeproj

4: Recherchez les sections Embedded Binaries Et Linked Frameworks and Libraries Dans les paramètres généraux de votre projet. Ajoutez le fichier .framework De votre bibliothèque aux deux.

5: Nettoyer (⇧ + ⌘ + K) et construire (⌘ + B).

6: Importez votre bibliothèque dans la cour de récréation.

1
Shiyason

Comme utiliser des classes Objective-C dans Swift, vous pouvez importer des bibliothèques/classes tierces dans votre projet et Xcode vous demandera si vous voulez créer un <#YourProjectName>-Bridging-Header En tête de fichier. Choisissez oui et importez tous les fichiers d'en-tête dont vous avez besoin dans ce fichier. Après cela, dans votre aire de jeux, vous pouvez simplement faire import <#YourProjectName>-Bridging-Header après import UIKit et vous pourrez utiliser les classes que vous avez importées dans votre projet.

Mise à jour: c'est en fait incorrect. Veuillez voir mon commentaire ci-dessous. Désolé pour toute confusion ...

0
Peng90