web-dev-qa-db-fra.com

Comment créer un framework parapluie dans le SDK iOS?

Je souhaite créer un cadre général dans le SDK iOS. Mes exigences sont:

J'ai un framework appelé "Framework A", je veux créer un autre framework appelé "Framework B". Je veux ajouter "Framework A" dans "Framework B" en tant que sous-framework et les utilisateurs n'ont qu'à importer "Framework B" dans leur projet pour utiliser à la fois "Framework A" et "Framework B". En d'autres termes, "Framework B" fonctionnera comme un wrapper pour "Framework A". J'ai lu à partir de Apple via le lien suivant concernant les créations de framework:

https://developer.Apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html

mais cela n'expose pas la façon de créer un cadre général.

Veuillez suggérer une méthode étape par étape pour créer un cadre général.

21
Hashim Khan

Nous savons tous que la création d'un cadre général est fortement déconseillée par Apple. Mais Apple dit également que c'est possible via Xcode. https://developer.Apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html# // Apple_ref/doc/uid/20002254-BAJHGGGA

J'ai réussi à créer un cadre général via cette approche simple sur Xcode 5.1. Nous avons juste besoin de prendre soin d'une configuration spéciale pour relier le sous-cadre au cadre général. Voici mon approche: -

1) Installez le vrai Static iOS Framework sur Xcode 5.1 à partir de la méthode décrite ici: - https://github.com/kstenerud/iOS-Universal-Framework .

Désormais, le "Framework iOS statique" peut être créé à l'aide de la nouvelle option de Xcode.

enter image description here

2) Créez un Static iOS Framework et modifiez le Target-> Build Settings-> Architectures-> Architectures paramètres aux architectures standard. Cela créera le cadre avec toutes les architectures standard.

enter image description here

3) Ajustez les fichiers d'en-tête public dans Target-> Build Phase-> Copy Headers. Nous pouvons définir la visibilité du fichier d'en-tête ici.

enter image description here

4) Liez SubFramework à UmbrellaFramework dans Target->Build Phase -> Link Binary With Libraries. Nous pouvons également avoir besoin de lier d'autres cadres standard en fonction de notre utilisation.

enter image description hereenter image description here

5) Il se peut que nous devions également ajouter des ressources groupées dans Target-> Build Phase-> Copy Bundle Resources si nous en avons besoin.

enter image description here

6) Il se peut que nous devions également ajouter -ObjC à Target-> Build Settings->Linking-> Other Linker Flag, car nous pouvons avoir besoin de charger un grand sous-cadre où il y a de nombreuses catégories à charger ou nous devons également charger des frameworks supplémentaires.

enter image description here

7) Ajoutez Copy File en utilisant Target-> Build Phases-> +-> New Copy File Build Phase.

enter image description here

8) Modifiez sa destination en Frameworks et ajoutez-y SubFramework.framework. Cela copiera SubFramework dans Umbrella Framework.

enter image description hereenter image description here

9) Pour la démo, j'ai ajouté deux méthodes de démonstration dans la classe UmbrellaFramework. Un pour la démonstration de l'appel de la méthode du cadre général et un pour l'appel de la méthode subFramework.

enter image description hereenter image description here

10) Sélectionnez iOS Device et archiver le projet UmbrellaFramework à partir de Menu->Product->Archive. Cela créera notre cadre général et c'est tout.

enter image description here

11) Il est maintenant temps de créer un nouveau projet de démonstration et de le lier à UmbrellaFramework.

enter image description here

12) Importez simplement l'en-tête UmbrellaFramework et appelez les deux méthodes. Il affichera la fenêtre Hello messages in log.

enter image description here

36

Pour créer un Swift qui contient un sous-framework, vous pouvez suivre le guide étape par étape écrit ici: Framework de parapluie

2
ehrpaulhardt