Je dois admettre qu'avec la version iOS 8, je suis un peu confus au sujet des frameworks dynamiques et statiques dans iOS.
Je cherche un moyen de distribuer une bibliothèque que j'ai créée et je dois prendre en charge iOS 7 et les versions ultérieures. (Remarque: ce sera un cadre propriétaire. Je ne peux pas utiliser de cosses de cacao et je ne peux pas non plus distribuer la source). Voici ce que je sais déjà:
Et voici mes questions concernant ces informations:
Avant iOS8, Xcode permettait uniquement la création de bibliothèques statiques pour iOS. Le problème commun à cela était que nous devions expédier le binaire et les en-têtes séparément.
Plus tard, certains développeurs ont eu l'idée de créer des "cadres statiques". [.framework est juste un dossier avec des liens symboliques vers la bibliothèque et les en-têtes]. Un tel exemple est https://github.com/jverkoey/iOS-Framework
Cette option fonctionnera pour iOS 7 ou 8 ou avant. Parce que ce ne sont que des bibliothèques statiques avec la possibilité de regrouper les fichiers d'en-tête.
Pour ce qui est de vos questions sur les ressources, nous aurions besoin de les regrouper dans '.bundle' .. Pour les expédier, je ne sais pas si nous pouvons les inclure dans le dossier .framework. un framework statique et bundle ...
Cependant, l'option ci-dessus ne fonctionnera pas pour vous si vous utilisez Swift. Xcode ne prend pas en charge la construction de bibliothèques statiques incluant le code Swift.
Vous devez utiliser les frameworks dynamiques s'il y a Swift. En théorie, les frameworks dynamiques fonctionnent dans iOS7 .. Mais je pense qu'iTunes Connect rejettera si l'application cible iOS7 et utilise des frameworks dynamiques: -).
J'espère que cela t'aides
À partir de Xcode 9, vous pouvez créer des cadres statiques pour Swift. Cela est possible grâce à la compatibilité de source ABI. Il vous suffit de changer le Mach-O type
sous les paramètres de construction de la cible du cadre. Cette technique est également applicable aux frameworks hybrides (frameworks avec Swift et code Objective-C).
Swift ne fonctionne pas dans la bibliothèque statique. Si vous devez utiliser un cadre dynamique, vous devez définir min iOS à 8.0 car AppStore rejet ios 7 avec cadre dynamique
Je n'ai pas toutes les réponses, mais je vais essayer de répondre à certaines de vos questions ici.
Vous recevrez un avertissement pour utiliser ces frameworks dans iOS 7, mais c'est tout, un avertissement. Voir ceci réponse .
Vous pouvez inclure d'autres ressources telles que CoreData, mais vous devrez les créer manuellement dans le code. Voici un tutoriel montrant comment créer un modèle de données de base.
Vous devez coder en signant les bibliothèques dynamiques pour iOS.
Si vous envisagez de le distribuer, vous devez vous assurer que votre infrastructure prend en charge les architectures de simulateur et de périphérique.
Les frameworks sont static
ou dynamic
des bibliothèques regroupées dans un bundle avec des actifs supplémentaires, une méta-description pour la gestion des versions, etc.
Vous pouvez changer le format de la bibliothèque qui aura un impact sur un Linker
en changeant Framework target -> Build Settings -> Mach-O Type
[À propos] à Static Library
ou Dynamic Library
. Par défaut, Xcode a Dynamic Library
valeur.
Dépend de ce paramètre, différents types de binaires seront générés [cocher statique ou dynamique]
Après avoir configuré avec succès un consommateur [Lien vs Intégrer]
Static Linker: ld
à compiler moment inclura tout le code du static library
dans le fichier objet exécutable.
Dynamic Linker: dyld
au chargement/à l'exécution essaiera de trouver la structure intégrée à l'aide de @rpath
[À propos] et le lier