web-dev-qa-db-fra.com

Phonegap 3.0 IOS plugins non trouvés

Je reçois cette erreur dans XCode:

2013-08-23 14:36:18.284 Tell The DJ[14955:c07] ERROR: Plugin 'Device' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-08-23 14:36:18.284 Tell The DJ[14955:c07] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
  "Device1096677259",
  "Device",
  "getDeviceInfo",
  [

  ]
]
2013-08-23 14:36:18.285 Tell The DJ[14955:c07] CDVPlugin class CDVConnection (pluginName: NetworkStatus) does not exist.
2013-08-23 14:36:18.285 Tell The DJ[14955:c07] ERROR: Plugin 'NetworkStatus' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-08-23 14:36:18.285 Tell The DJ[14955:c07] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
  "NetworkStatus1096677260",
  "NetworkStatus",
  "getConnectionInfo",
  [

  ]
]

J'ai installé Phonegap 3.0 avec l'interface de ligne de commande et collez mes fichiers www dans les dossiers du projet. L'application fonctionne bien, mais lorsque j'arrive à des fonctions natives comme l'ID de l'appareil, la caméra, les connexions réseau, elle échoue et m'obtient cette erreur. Mais je pense que mon config.xml est vrai?

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.helloCordova" version="2.0.0" xmlns="http://www.w3.org/ns/widgets">
    <name>Hello Cordova</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="[email protected]" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <feature name="LocalStorage">
        <param name="ios-package" value="CDVLocalStorage" />
    </feature>
    <access Origin="http://dev.tellthedj.de" />
    <preference name="KeyboardDisplayRequiresUserAction" value="true" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="UIWebViewBounce" value="true" />
    <preference name="TopActivityIndicator" value="gray" />
    <preference name="EnableLocation" value="false" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="AutoHideSplashScreen" value="true" />
    <preference name="ShowSplashScreenSpinner" value="true" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="OpenAllWhitelistURLsInWebView" value="false" />
    <preference name="BackupWebStorage" value="cloud" />
    <preference name="orientation" value="portrait" />
    <preference name="webviewbounce" value="false" />
    <preference name="prerendered-icon" value="true" />
    <preference name="phonegap-version" value="3.0.0" />
    <preference name="fullscreen" value="false" />
    <preference name="stay-in-webview" value="false" />
    <preference name="Android-minSdkVersion" value="7" />
    <preference name="Android-installLocation" value="internalOnly" />
    <preference name="target-device" value="universal" />
    <preference name="autohide-splashscreen" value="true" />
    <preference name="load-url-timeout" value="60000" />
    <preference name="show-splashscreen-spinner" value="true" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="allow-inline-media-playback" value="false" />
    <preference name="launch-mode" value="standard" />
    <feature name="Media">
        <param name="ios-package" value="CDVSound" />
    </feature>
    <feature name="Camera">
        <param name="ios-package" value="CDVCamera" />
    </feature>
    <feature name="Console">
        <param name="ios-package" value="CDVLogger" />
    </feature>
    <feature name="Device">
        <param name="ios-package" value="CDVDevice" />
    </feature>
    <feature name="Notification">
        <param name="ios-package" value="CDVNotification" />
    </feature>
    <feature name="File">
        <param name="ios-package" value="CDVFile" />
    </feature>
    <feature name="FileTransfer">
        <param name="ios-package" value="CDVFileTransfer" />
    </feature>
    <feature name="Geolocation">
        <param name="ios-package" value="CDVLocation" />
    </feature>
    <feature name="Capture">
        <param name="ios-package" value="CDVCapture" />
    </feature>
    <feature name="NetworkStatus">
        <param name="ios-package" value="CDVConnection" />
    </feature>
    <feature name="SplashScreen">
        <param name="ios-package" value="CDVSplashScreen" />
    </feature>
    <plugins>
        <plugin name="Device" value="CDVDevice" />
    </plugins>
</widget>
29
m1crdy

J'utilisais PhoneGap 3.0/3.1 et supprimais le dossier de build local avant de reconstruire (car je devais copier des icônes et des trucs dans un script de build secondaire). Cela a cassé mes plugins et produit ce même message d'erreur.

Finalement, j'ai trouvé que je devais supprimer ./plugins/ios.json lors de la suppression de ./platforms/ios pour vous assurer que les plugins ont été reconstruits.

73

La suppression du dossier platform/ios n'est pas une solution pour moi car toutes les personnalisations manuelles du projet xcode seront perdues.

Mais il existe un moyen simple de contourner:

Dans XCode, passez aux phases de construction -> ouvrez la liste déroulante Sources compilées. Cliquez sur + et ajoutez le fichier plugin .m manquant qui devrait se trouver dans votre répertoire Plugins (mais qui est absent des sources compilées).

Cette solution est venue d'une autre réponse de débordement de pile, ici: https://stackoverflow.com/a/21148428/80254

Une autre alternative:

Dans xcode, assurez-vous que les fichiers source du plug-in ont les paramètres "d'adhésion cible" définis: dans File-Explorer, accédez à Plugins> CDVDevice.m et vérifiez s'il y a une coche à côté du nom de votre application dans "adhésion cible" à droite côté de la fenêtre xcode. Cela fait en fait la même chose que l'autre solution mais est un peu plus pratique.

À partir d'ici: https://stackoverflow.com/a/20576744/80254

52
bjunix

J'ai rencontré le même problème. J'ai suivi la solution donnée par Jeffrey Van Alstine. Ceci est mon script pour créer et tester une application iOS développée à l'aide de Phonegap 3.0/3.1.

#!/bin/bash
echo "Killing xcode..."
kill $(ps aux | grep 'Xcode' | awk '{print $2}')
rm -r platforms/ios
rm plugins/ios.json
phonegap build ios
open platforms/ios/*.xcodeproj

Enregistrez-le en tant que fichier bash, par exemple, ios.sh dans votre répertoire de travail (répertoire contenant le dossier www) et exécutez ./ios.sh

Cela semble être un problème connu pour les versions 3. *

https://issues.Apache.org/jira/browse/CB-4971

vous pouvez résoudre ce problème en mettant à niveau Phonegap vers la version 3.4.

2
gsharp999

J'utilise Cordova 3.7 et j'ai résolu le problème avec la solution de Kobkrit Viriyayudhakorn, MAIS bien sûr vous devez utiliser

cordova build ios    

au lieu de

phonegap build ios    
1
mareks

Essayez de réinstaller le plugin:

ajout du plugin local phonegap https://git-wip-us.Apache.org/repos/asf/cordova-plugin-device.git

1
Rob Rodriguez

Cela peut également se produire si vous disposez d'un plugin référencé mais non installé. Si vous avez essayé les solutions ci-dessus et que vous ne trouvez pas le fichier .m du plugin référencé, il se peut que le plugin ne soit pas vraiment installé.

Je vérifierais votre répertoire de plugins pour vous assurer qu'il contient des fichiers. Sinon, réinstallez le plugin. Je suis tombé sur cela quand j'avais une faute de frappe dans le dépôt git lors de la restauration des plugins à partir du config.xml.

0
TechnoTim

Je suis tellement fatigué de supprimer et de rajouter des plateformes pour les problèmes de plugin! Il semble que ce soit encore un problème (2014/10) où si vous ajoutez des plugins à une application après avoir ajouté des plateformes, le plugin ne se propage pas parfois vers les dossiers de plateforme correspondants/etc. Notez que cela semble affecter principalement iOS - pas Android.

Je pense que ma solution est juste une méthode mise à jour pour faire la même chose que bjunix a posté plus tôt - mais dans XCode 6 pour corriger ce genre de chose sans supprimer/rajouter ma plateforme I:

  • Développez mon dossier App/Plugins dans le panneau de navigation du projet de gauche
  • Cliquez sur chaque fichier de plugin dans la liste qui est actuellement en texte rouge (un à la fois)
  • Accédez au panneau de droite (Utilitaires) et cliquez sur l'icône de dossier dans la section Identité et type pour le relier au fichier réel (voir capture d'écran ci-dessous).

Après avoir fait ce qui précède, mon projet se construit enfin.

enter image description here

0
Chris Emerson

Lorsque cela se produit, il semble que le package xcode npm chargé d'apporter des modifications au fichier pbxproj laisse parfois des références aux fichiers de plug-in qui ont été supprimés. Je n'ai pas recherché dans quelles circonstances exactes cela se produit, mais cela semble se produire à partir des opérations fréquentes de suppression/ajout de plug-in (pour mettre à jour un plug-in par exemple).

Je soupçonne que lorsqu'un plugin est supprimé et que le package xcode npm échoue dans son travail, il ne peut supprimer que les références de fichier de plugin de la section PBXBuildFile mais pas d'autres sections, laissant le pbxproj dans un état cassé.

Lorsque le package xcode npm tente à nouveau d'ajouter les références du fichier de plug-in, il vérifie d'abord si les références sont déjà dans pbxproj. Il regarde dans la section PBXFileReference, et comme il trouve des références au plugin là-dedans, abandonne le traitement, ne nous amenant nulle part.

Ma solution, bien qu'un piratage en fin de compte, consiste à forcer le package xcode npm à vérifier la section PBXBuildFile à la place. Cette section manquera les références et à son tour le plugin sera réinstallé correctement.

Remplacez pbxFileReferenceSection par pbxBuildFileSection sur cette ligne: https://github.com/alunny/node-xcode/blob/master/lib/pbxProject.js#L62

Réinstallez vos plugins, et vous devriez être prêt à partir.

0
matb33

J'ai trouvé une solution qui a fonctionné pour moi. J'utilisais avec le plugin Compass et après avoir ajouté le plugin, j'ai remarqué que le config.xml (plugin docs) dit qu'il aurait dû

    <feature name="Compass">
    <param name="ios-package" value="**CDVLocation**" />
</feature>

tandis que le plugin ios.json a ajouté

        "config.xml": {
        "/*": {
            "<feature name=\"Compass\"><param name=\"ios-package\" value=\"**CDVCompass**\" /></feature>": 1,
            "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>": 1
        }

L'un d'eux fait alors référence à CDVCompass tandis que l'autre CDVLocation ... changer le xml en CDVCompass a fait l'affaire et maintenant l'application fonctionne.

0
Vlad Agri

Je mon cas Après avoir installé le plugin Paypal, je suis confronté à un problème.

J'ai résolu son problème en ajoutant "PayPalMobileCordovaPlugin.m" dans la source de compilation.

Il vous suffit donc d'ajouter un fichier .m dans la source de compilation et d'ajouter que cela fonctionne pour moi.

Vérifiez la capture d'écran . Screenshot After Add .m File

J'espère que son travail pour vous

0
Mayur

je pense que vous devez utiliser le bon config.xml pour moi, c'est le dossier cible du projet Xcode config.xml, et non le dossier www de la plateforme

0
steph