web-dev-qa-db-fra.com

Comment utiliser une bibliothèque statique .a dans swift?

Je souhaite utiliser ma bibliothèque statique webrtc .a dans Swift. Pouvez-vous aider s'il vous plaît? J'ai lu que vous ne pouvez pas utiliser de bibliothèques statiques dans Swift, est-ce vrai?

13
CarlosAndres

Avez-vous résolu ce problème? Je rencontre ce problème aujourd'hui aussi, et je l'ai corrigé juste un instant. Si vous n'avez pas résolu ce problème, vous pouvez essayer les étapes ci-dessous:

p.s .: les 2 projets se trouvent dans le même espace de travail (le projet de bibliothèque statique et le projet d'application), le projet de bibliothèque statique est créé avant le projet d'application. La structure de l'espace de travail comme le montre l'image:

 /Users/raniys/Desktop/Screen Shot 2016-03-14 at 5.27.20 PM.png

  1. Dans le projet de bibliothèque statique, tous les fichiers .h doivent être ajoutés à "Build Phases/Copy Files":

 enter image description here

  1. Faites glisser le fichier de produit lib statique (le fichier .a) vers le projet d'application, voir l'image:

(chemin: "projet d'application/phases de construction/lien binaire avec des bibliothèques")

 enter image description here

* si vous vous souciez de la marque de couleur rouge pour le fichier .a, il vous suffit de choisir le "périphérique iOS générique" comme périphérique de compilation pour reconstruire le projet de bibliothèque statique, puis de faire glisser le fichier .a vers le projet d'application ( le rouge peut être supprimé)

  1. Définissez le "chemin de recherche de la bibliothèque" dans votre projet d'application:

 enter image description here

il s’agit du chemin de fichier .a dans lequel le projet a été construit: $ (USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/StockApp-fkjqyvsniiauxogkivalcduqeotj/Build/Products/Debug-iphoneos

  1. Créez un fichier d'en-tête de pontage pour votre projet d'application et importez-y la bibliothèque statique. Dans mon cas, j'inclus "StaticLib/StaticLib.h" et "CommonFoundation/CommonFoundation.h":

 enter image description here

  1. Ajoutez le chemin du fichier Bridging-Header à "Objective-C Bridging Header" de votre projet d'application:

 enter image description here

Ceci fait, vous pouvez maintenant utiliser les fonctions des bibliothèques statiques .  enter image description here

29
Raniys

Oui, vous pouvez utiliser des bibliothèques statiques dans Swift. Allez à vos phases de construction et sous "Lier binaire avec des bibliothèques" et ajoutez-les là. 

 enter image description here

Sinon, vous pouvez aller sous Paramètres de construction et dans "Chemins de recherche" ajouter la valeur "Chemins de recherche de bibliothèque" pour inclure le chemin du dossier dans lequel se trouve votre fichier .a 

 enter image description here

Vous pouvez ajouter des en-têtes pour votre bibliothèque de la même manière sous "Chemins de recherche des en-têtes".

Gardez également à l'esprit que si cette bibliothèque est écrite en Objective-C, vous aurez besoin d'un en-tête de pontage pour l'utiliser dans Swift.

1
Cole

Avec Xcode 9, utilisez des bibliothèques statiques prises en charge avec Swift. Vous pouvez utiliser comme utiliser dans Objective-C. Notes de publication Xcode

Xcode prend en charge les cibles de bibliothèques statiques contenant du code Swift. Le débogage d'applications qui utilisent des bibliothèques statiques Swift peut nécessiter un ensemble complet d'artefacts de construction qui se trouvent à leur emplacement d'origine.

1
abdullahselek