Pouvez-vous construire les bibliothèques dynamiques pour iOS et de les charger à l'exécution?
Sont les bibliothèques dynamiques pris en charge sur iOS (iPhone/iPad)?
Dans Xcode, j'ai essayé de créer un Nouveau projet -> Cadre & Bibliothèque -> Cocoa (dynamique). Dans les paramètres du projet, j'ai mis le Base SDK à iOS device 4.1
et la cible à iOS4.1
, mais il a une erreur de compilation:
cible précise le " type de produit com.apple.type de produits.de la bibliothèque.dynamique", mais il n'y a pas de tel type de produit pour le "iphonesimulator plate-forme".
Le build que j'ai sélectionné est Simulateur -> Debug -> i386.
- Non, mais vous pouvez créer et lier une bibliothèque statique
- iOS8+ prend en charge les cadres basé sur le partage de la bibliothèque.
- pouvez-vous développer? Je voudrais en savoir plus à ce sujet, un article ou un lien vers une info serait très apprécié.
- ddeville.moi/2014/04/dynamique de la liaison
Vous devez vous connecter pour publier un commentaire.
À l'époque, cette question a été posée, les bibliothèques Dynamiques n'ont pas été pris en charge par iOS et fera en sorte que votre application se faire rejeter. Seules les bibliothèques statiques sont autorisés.
Cependant, dans iOS8, vous pouvez utiliser les bibliothèques dynamiques et des cadres. Il devait tout simplement "travail"
Je ne suis pas vraiment en désaccord avec DarkDust réponse, mais si je peut canaliser mon intérieur Bill Clinton, cela dépend de ce que le sens de pris en charge est 🙂
Apple ne veut pas que vous le faire pour de apps de l'App Store, mais le système d'exploitation certainement le permet. Jailbreak apps utilisez cette technique tout le temps. Fondamentalement, vous utilisez un UNIX standard technique dynamique d'ouvrir un cadre/la bibliothèque, et ensuite utiliser des choses. Le fonction dlopen vous permet d'ouvrir la bibliothèque en passant par le chemin d'accès à ce cadre, ou dylib. De certains docs pour la construction de jailbreak apps, voici un exemple d'appel d'une
init()
une fonction à l'intérieur de votre propre dylib:En outre, le défaut de restriction contre vous permettant de construire une bibliothèque dynamique de projet pour iOS est quelque chose dans Xcode que vous avez la possibilité de remplacer par la modification d'une partie de XCode fichiers xml:
Construire et utiliser dylib sur iOS
Une fois que vous faites cela, vous pouvez construire une normale iOS .dylib bibliothèque, et de l'utiliser par l'exemple de code ci-dessus. (oui, vous aurez probablement à débloquer cette fonctionnalité de nouveau chaque fois que vous installez un nouveau XCode version).
Donc, ce n'est pas une limitation technique, mais un Magasin d'Application de la politique de limitation. Si vous n'êtes pas limité à l'App Store, alors vous pouvez le faire. Notez que cette technique ne pas besoin de jailbreak, même si l'application est en mode bac à sable, il peut limiter où dylibs peut être chargé de.
Edit: afin de vous assurer que cette information n'est pas perdu pour l'avenir pourriture des liens, voici le contenu du lien que j'ai fourni sur la façon d'activer iOS dylibs dans Xcode. (Remarque: ce processus fonctionne encore sur Xcode 4, mais voir le commentaire(s) ci-dessous pour les mises à jour des chemins d'accès, etc.) La Source est le iOS Place blog:
Xcode ne vous permet pas de construire dylib pour iOS. L'application sera rejetée si elle n'est pas binaire. Mais j'ai une application qui a architecture de plug-in pour charger les modules optionnels. Je veux juste un prototype rapide de prouver concept avant de pleinement port pour iOS. C'est plus rapide à faire si dylib pourrait simplement de travailler. Donc, cet article montre comment créer et utiliser dylib, mais être conscient de ne pas être approuvé à l'App Store. (Testé avec Xcode 3.2.4 sur 10.6.4)
1. Ouvrir ces fichiers dans la Liste des propriétés de l'Éditeur: /Développeur/plates-formes/MacOSX.de plate-forme/Developer/Library/Xcode/Spécifications/MacOSX Types de Produits.xcspec et /Développeur/plates-formes/iPhoneSimulator.de plate-forme/Developer/Library/Xcode/Spécifications/Simulateur d'iPhone, ProductTypes.xcspec
2. Recherchez l'élément dans le “MacOSX Types de Produits.xcspec” qui a le type de produit
com.apple.product-type.library.dynamic
et faites-le glisser vers le “Simulateur d'iPhone, ProductTypes.xcspec”.3. Ouvrir “MacOSX Types De Colis.xcspec” et “Simulateur d'iPhone PackageTypes.xcspec”, à la même place.
4. Recherchez l'élément dans le “MacOSX Types de Produits.xcspec” qui a le type de paquet
com.apple.package-type.mach-o-dylib
et faites-le glisser vers le “Simulateur d'iPhone PackageTypes.xcspec”.5. Répétez les étapes pour le “iPhoneOS.plate-forme” et de relancer Xcode si elle a été en cours d'exécution.
Maintenant, permet de construire un dylib. Commencer avec le “Cocoa Touch Bibliothèque Statique” Modèle. Qui doit la Fondation.dans le cadre du projet. Voici les modifications que j'ai apportées sur le dessus du modèle à construire dylib.
1. Ouvrir le fichier projet.pbxproj (qui se trouve à l'intérieur du fichier de projet Xcode bundle) dans un Éditeur de Texte. Recherchez la chaîne “producttype”, changer sa valeur à
com.apple.product-type.library.dynamic
;Maintenant, ouvrez le projet avec Xcode, aller à Projet->Modifier les Paramètres du Projet
2. “Répertoire d'Installation” ensemble pour
@executable_path/
parce que j'ai l'intention de mettre la dylib dans le même répertoire que l'application exécutable.3. “De Mach-O, Type” ensemble à la Bibliothèque Dynamique
4. “Exécutable Extension” ensemble pour dylib
5. “Exécutable Préfixe” vide
6. Ajouter une ou deux méthodes simples à la bibliothèque et de le construire.
Maintenant, créer une application pour la tester. Cette fois, je choisis le View-based Application. Le raccordement d'un UIButton et un UILabel à l'appel de la lib et montrant message de retour. Vous pouvez télécharger le projet complet TestApp et de jouer avec elle.