web-dev-qa-db-fra.com

Comment puis-je créer une bibliothèque statique et ajouter uniquement un fichier .a sur n'importe quel projet dans iOS

Comment puis-je créer une bibliothèque statique et ajouter uniquement un fichier .a sur n'importe quel projet dans ios.

J'ai essayé de faire ça mais je n'ai pas pu le faire.

Merci d'avance

16
user2568616

si vous voulez créer une bibliothèque statique, référez-vous au lien http://jaym2503.blogspot.in/2013/01/how-to-make-universal-static-library.html

Étape 1: Créez un nouveau projet, nommé "Logger"

Étape 2: créer des classes

Vous pouvez créer autant de classes que vous le souhaitez, dans notre tutoriel nous allons créer une classe nommée "Logger". Donc, maintenant deux fichiers devraient être dans notre ressource. 1. Logger.h 2. Logger.m

Étape 3: Mettez du code utile dans les classes

Étape 4: créer une nouvelle cible

Créer une nouvelle cible à partir du menu Fichier.

Nouvelle bibliothèque statique Select Cocoa Touch cible

Étape 5: ajouter des fichiers à la ressource de compilation

Sélectionnez la cible "Enregistreur" de la bibliothèque statique. Accédez à la section Créer des phases dans les sources conformes, ajoutez tous les fichiers .m et .mm. Dans la section Copier les fichiers, ajoutez tous les fichiers .h et les fichiers de ressources.

Phases de construction

Étape 6: Compiler le projet avec la cible de bibliothèque statique

Compile Project for iOS Device Compile Project for Simulator Vous pouvez trouver deux fichiers .a différents générés dans les dossiers de construction.

Rechercher un fichier .a

Étape 7: rendre la bibliothèque statique universelle

Vous pouvez maintenant trouver deux bibliothèques différentes, l'une pour le simulateur et l'autre pour les appareils iOS.

Créez un nouveau dossier et nommez-le LoggerMerge. Copie libLogger.a fichier du dossier Debug-iphoneos vers "LoggerMerge" renommez-le en libLogger_device.a Copiez libLogger.a fichier du dossier Debug-iphonesimulator vers "LoggerMerge" renommez-le libLogger_simulator.a Ouvrez le dossier LoggerMerge avec Terminal Fire sous la commande lipo -create "Terminal Fire" libLogger_simulator.a "" libLogger_device.a" -production "libLogger.a "

Maintenant, vous pouvez trouver libLogger.a dans le dossier LoggerMerge, il s'agit du fichier de bibliothèque statique universel. Maintenant, une seule chose dont vous avez besoin est les en-têtes, voir la capture d'écran ci-dessus, il y a un dossier appelé inclure dans les deux dossiers de construction. Copiez simplement le fichier d'en-tête de ce dossier.

Étape 8: tester la bibliothèque statique

Créer un nouveau projet, nommez-le TestLogger Import libLogger.a et fichiers d'en-tête Importer le fichier d'en-tête "Logger.h "partout où vous voulez utiliser maintenant, utilisez cette classe Logger comme pratique par défaut. Dans notre cas, [Journal de l'enregistreur: @" Test String "]; Exécutez Project dans Simulator et Device both C'est tout !! Vous avez votre propre bibliothèque statique !!

29
dhaya

Étape 1: Démarrage d'un nouveau projet de bibliothèque statique

Ouvrez XCode et démarrez un nouveau projet. Sous iOS, sélectionnez Library et "Cocoa Touch Static Library" dites-le comme "staticlibrary". Cela va créer un nouveau projet agréable pour nous qui construit un .a fichier.

Étape 2: Codez votre bibliothèque statique Nous devons d'abord ajouter des fichiers. Ajoutez une nouvelle sous-classe NSObject à votre projet et nommez-la StaticClass, puis écrivez du code utile dans ces fichiers.

Étape 3: Construction et distribution de votre bibliothèque Une fois que vous êtes satisfait de votre bibliothèque, il vous suffit de la construire dans XCode. Évidemment, ne construisez pas et n'exécutez pas car vous ne pouvez pas l'exécuter (à nouveau, sauf si vous avez une suite de tests). Maintenant, regardez sous le groupe Produits dans XCode et vous devriez voir un fichier appelé lib (libraryName) .a. Dans notre cas, c'est libstaticlibrary.a.

Faites un clic droit sur ce fichier et sélectionnez "Révéler dans le Finder". Faites glisser ce fichier dans un nouveau dossier que vous créez dans lequel vous regrouperez tous vos fichiers de bibliothèque. Faites de même avec tous les fichiers .h. Dans notre cas, copiez simplement StaticClass.h dans ce nouveau répertoire. La structure de votre répertoire devrait maintenant ressembler à:

FolderName
|- libstaticlibrary.a
|-  StaticClass.h

Maintenant, vous pouvez compresser ce dossier et le vendre à des développeurs iOS potentiels pour des millions!

Étape 4: Lier votre bibliothèque dans un nouveau projet Alors maintenant que vous avez construit votre nouvelle bibliothèque statique brillante, il est temps de la tester dans une autre application.

Créez un nouveau projet basé sur la vue (ou tout ce qui n'a pas vraiment d'importance). Nommez-le comme test.

Maintenant, faites simplement glisser ce dossier dans le projet et XCode configurera automatiquement tous les liens. Lorsque vous êtes invité à copier, je dis généralement oui, mais vous pouvez faire ce que vous voulez en fonction de la façon dont vous avez l'intention d'utiliser la bibliothèque. Parfois, la simple liaison et la non-copie sont beaucoup plus avantageuses si plusieurs projets partagent une seule bibliothèque. Il garantit qu'ils utilisent tous la version la plus récente.

Vous devriez maintenant voir le .a fichier avec les fichiers d'en-tête dans le nouveau projet.

Étape 5: Utilisation du code de bibliothèque statique

Maintenant que tous les liens sont configurés, vous utilisez simplement votre bibliothèque comme n'importe quelle autre classe.

Pour plus de clarifications http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial j'espère que ce tutoriel vous aidera.

11
yashwanth77

Consommateur Objective-C -> Bibliothèque statique Objective-C

Xcode version 10.2.1

Créer une bibliothèque statique Objective-C

Créer un projet de bibliothèque ou créer une cible de bibliothèque

File -> New -> Project... -> Cocoa Touch Static Library
//or
Project editor -> Add a Target -> Cocoa Touch Static Library 

Créer module.modulemap fichier [Sur]

module module_name {
    umbrella header "module_name-umbrella.h"
    export *
}

Créer module_name-umbrella.h fichier [Sur] et ajoutez tous les .h fichiers qui seront ouverts au consommateur

#import "header_1.h"
#import "header_2.h"

Ajouter module.modulemap et module_name-umbrella.h fichiers dans le Copy Files section [Sur]

Project editor -> select a target -> Build Phases -> Copy Files -> add `module.modulemap`, `module_name-umbrella.h` 

Ajouter des fichiers d'implémentation .m

Select `.m` file -> Select File Inspectors Tab -> Target Membership -> Select the target
//or
Project editor -> select a target -> Build Phases -> Compile Sources -> add files

Ajouter des fichiers d'en-tête .h répertoriés dans module_name-umbrella.h (header_1.h, header_2.h) [ne peut pas le faire][adhésion cible publique]

Select `.h` file -> Select File Inspectors Tab -> Target Membership -> Select the target and make it **public**
//or
Project editor -> select a target -> Build Phases -> Headers -> add files to the **public** zone

Créer une bibliothèque - ⌘ Command + B ou Product -> Build

Remarque: veillez à créer une bibliothèque pour la même architecture de processus que le code client.

Rechercher la sortie générée [Lieu de construction]

Products group -> lib<product_name>.a -> Show in Finder

Le répertoire comprend

  • lib<product_name>.a - une bibliothèque statique construite
  • include/<product_name> dossier contenant des fichiers de Copy Files section
  • usr/local/include dossier avec des fichiers de la section Headers. Il existe des interfaces/définitions publiques

Utilisation de la bibliothèque statique Objective-C

Drag and drop le binaire dans le projet Xcode [Sur]

Link Library[Symboles non définis][Lien vs intégration]

Project editor -> select a target -> General -> Linked Frameworks and Libraries -> add -> Add Others... -> point to `lib<product_name>.a` file
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries -> add -> Add Others... -> point to `lib<product_name>.a` file

Ajouter Library Search paths[Bibliothèque introuvable pour][Chemin récursif]

Project editor -> select a target -> Build Settings -> Search Paths -> Library Search paths -> add path to the parent of `lib<product_name>.a` file

Ajouter Header Search Paths[Module introuvable][Chemin récursif]

Project editor -> select a target -> Build Settings -> Search Paths -> Header Search Paths -> add path to generated `include/<product_name>` folder with `module.modulemap` and `<product_name>-umbrella.h`

Importer le module dans le code client Objective-C [nom_module]

@import module_name;

Plus d'exemples ici

1
yoAlex5