web-dev-qa-db-fra.com

Comment regrouper des dépendances CocoaPods avec Cordova Plugin?

Je développe un plugin Cordova, et pour la plate-forme iOS, j'aimerais incorporer quelques Cocoapod existants (non spécifiques à Cordova). Je n'ai pas été en mesure de trouver des informations ou des exemples sur la façon de faire fonctionner cela, et je m'attendais à ce que ce soit un cas d'utilisation assez courant.

Notez que je n'essaie pas d'utiliser Cordova en tant que Cocoapod, pour lequel il existe une quantité décente d'informations, mais plutôt d'utiliser Cocoapod à partir de la plate-forme iOS d'un plugin Cordova que je développe.

Le plugin.xml de Cordova doit généralement répertorier toutes les dépendances du projet pour regrouper les éléments correctement. Est-ce que quelqu'un connaît un plugin Cordova ou PhoneGap qui utilise en interne des Cocoapods?

26
fisch2

Je viens de perdre plusieurs heures à ce sujet, alors j’ai pensé que je mettrais ceci ici pour tous ceux qui sont intéressés. Cordova à partir de Cordova-CLI version 6.4.0/Cordova iOS version 4.3.0 prend en charge l'intégration directe avec CocoaPods.

Des informations détaillées se trouvent ici: https://cordova.Apache.org/docs/en/latest/plugin_ref/spec.html

Ajoutez simplement quelque chose comme:

<platform name="ios">
    ...Other iOS platform specific declerations...
    <framework src="OpenSSL" type="podspec" spec="~> 1.0.0" />
</platform>

Vers le fichier plugin.xml de votre plugin. Cordova génère automatiquement un .xcworkspace. Utilisez-le à la place du fichier xcodeproj et vous êtes prêt à partir.

26
Jarra McIntyre

Je ne pouvais pas trouver une bonne solution à ce problème, j'ai donc créé un plugin, https://github.com/blakgeek/cordova-plugin-cocoapod-support . Il ajoute un support pour la définition des dépendances Cocoapod dans le fichier plugin.xml. Il doit être inclus en tant que dépendance d'un autre plugin, qui peut ensuite ajouter des entrées dans la section de la plate-forme ios du fichier plugin.xml. Il supporte toutes les spécifications de dépendance des pods comme le repo git, les configurations, les souspecs, etc. J'espère que cela aidera quelqu'un.

4
blakgeek

Je ne pouvais pas trouver beaucoup d'informations à ce sujet non plus, alors j'ai écrit un plugin Cocoapods pour aider: https://github.com/xdissent/cocoapods-cordova Il gère votre plugin.xml automatiquement et construit une bibliothèque statique universelle qui relie dans seulement les dépendances non-cordova. Actuellement un WIP, mais je l’utilise avec succès sur quelques plugins.

3
xdissent

Je rencontre une situtation similaire. 

Voici deux solutions de contournement. 

  1. Intégrez Cordova dans l’environnement de développement du plug-in, c’est-à-dire, transformez un projet Xcode pur en un projet basé sur Cordova. Si nous voulons utiliser les plugins Cordova pour iOS, ils sont également disponibles via Cocoapods.

  2. Introduisez Cocoapods dans le projet Xcode généré par Cordova. De cette façon, nous devons placer le code généré dans le contrôle de source et faire attention lorsque nous ajoutons d'autres plugins, car les fichiers que nous avons modifiés peuvent être modifiés par cordova.

Je ne sais pas encore lequel est le meilleur choix.

Les informations sur les pods suivants sont utiles pour la solution de contournement # 1.

pod search cordova

-> Cordova (4.0.1) Cordova iOS pod 'Cordova', '~> 4.0.1' - Page d'accueil: https://github.com/Apache/cordova-ios - Source: https://github.com/Apache/cordova-ios.git - Versions: 4.0.1, 3.9.1, 3.8.0, 3.7.0, 3.6.0, 3.5.0, 3.4.1, 3.4.0, 3.3.0, 3.2.0, 3.1.0, 3.0.0 , 2.9.0, 2.8.0, 2.7.0, 2.6.0, 2.5.0, 2.4.0, 2.3.0, 2.2.0, 2.1.0, 2.0.0, 1.9.0, 1.8.1, 1.8.0, 1.7.0, 1.6. 1, 1.6.0, 1.5.0, 1.4.1, 1.4.0, 1.3.0, 1.2.0, 1.1.0, 1.0.0 [repo maître]

-> Cordova-Lib (3.9.1) Apache Cordova est une plateforme de création d'applications mobiles natives en utilisant HTML, CSS et JavaScript . pod 'Cordova-Lib', '~> 3.9.1' - Page d'accueil: https://git.oschina.net/liubiqu/cordova-ios - Source: https://git.oschina.net/liubiqu/cordova-ios.git - Versions: 3.9.1, 3.9.0, 3.8.0 [référentiel maître]

0
Intel