44 votes

Un plugin phonegap doit-il être déclaré dans le fichier config.xml?

Je suis un newbie dans le développement phonegap j'ai donc quelques questions:

1) je suis l'aide de l'accéléromètre de plug-in. J'ai lu dans le manuel que j'ai besoin de déclarer le plugin dans le config.xml fichier afin de l'utiliser. Cependant, j'ai remarqué que même si je l'ai supprimer de la déclaration de l'config.xml

<feature name="Accelerometer">
    <param name="android-package" value="org.apache.cordova.AccelListener" />
</feature>

l'accéléromètre fonctionne toujours.

Donc, je voudrais vous demander si, dans le phonegap 3.0.0 version , l'utilisation de la config.xml est obsolète. Si c'est le cas alors où est la liaison a lieu?

2) j'utilise la plate-forme android pour construire l'application. Dans la structure du projet, il y a trois config.xml fichiers avec un contenu différent: a) Dans le assets/www/phonegap-app-hello-world-3.0.0/www/config.xml b) Dans le assets/www/phonegap-app-hello-world-3.0.0/config.xml c) Dans le res/xml/config.xml

Ce s l'utilisation de chacun d'eux ? D'où, je suppose, de déclarer mes plug in? Je l'ai fait dans le res/xml/config/fichier xml

Merci

124voto

MBillau Points 3608

Je suis sûr que la raison que vous pouvez toujours utiliser le plugin est parce que vous avez modifiés le mauvais config.xml ou de ne pas exécuter l'cordova outils de ligne de commande pour propager vos modifications à la corriger config.xml le fichier qui est utilisé par l'application.

Il y a plusieurs config.xml fichiers à différents endroits dans un Cordova 3.x projet. Je vais essayer de vous donner une vue d'ensemble des différents emplacements des fichiers et comment vous devez interagir avec eux. Gardez à l'esprit que c'est ce qui arrive lorsque vous utilisez la CLI (Command Line interface) - j'ai généré cette structure de répertoire en tapant:
cordova create {MyApp}

Si vous utilisez la plate-forme au niveau des scripts shell pour construire l'application (le "vieux" de façon que nous l'avons fait dans Cordova 2.X), vous pouvez généralement utiliser le même flux de travail, mais vous devrez Utiliser Plugman pour Gérer les Plugins. (Nous sommes dans le processus de la documentation de ces deux "flux de travail".)

Tout d'abord, lorsque vous créez une application avec
, il faudra créer un projet vide de la structure comme ceci:


cordova platform add android ios

Vous devez faire toutes vos modifications de fichiers dans
, ce qui est de la "croix" plate-forme de code source. Tout ce qui est dans ce dossier obtiendrez généralement copiés et propagées à niveau de la plateforme le dossier lorsque vous utilisez les outils de ligne de commande (si son cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git pour Android ou juste
pour iOS). De cette façon, vous avez seulement besoin d'un seul dossier source de votre application - c'est le dossier que vous devriez avoir sous contrôle de version. N'importe quelle application à l'échelle de modifications de configuration que vous voulez doit être faite à l' (As of 3.1, provide the plugin id) cordova plugin add org.apache.cordova.network-information le fichier placé à cet endroit; plus tard, lorsque vous utilisez les outils, ce cordova create MyApp le fichier sera copié (et parfois modifiées avec plate-forme des informations de configuration spécifiques) à l'endroit le plus approprié pour chaque application, /myApp/ /www/ # This is where your "cross-platform' files go. # The build tools copy these files over to the correct # asset folder for each platform, like /assets/www/ for # android or just /www/ for iOs. This is where you should # be doing most/all of your work and is what should # probably be version controlled. /platforms/ /android/ # These will only appear after `cordova platform add` /ios/ # You should generally not touch these file as they are # recreated quite often, although changes will persist. /plugins/ /android/ # These will only appear after `cordova plugin add`. They # pretty much just contain the native and web plugin code # for all platforms that a plugin supports. /ios/ /merges/ # This is where you can place platform-specific code that # you write that will get merged in with your cross # platform source, see the "customize each platform" # section of: http://cordova.apache.org/docs/en/3.0.0/guide_cli_index.md.html (pour android) ou /www/ (pour iOS).

Dites que vous voulez ajouter à l'accélération plugin en tapant www. Si vous exécutez une diff après cette commande, vous verrez les fichiers suivants ont été modifiés ou ajoutés:

plugins/org.apache.cordoue.le réseau de l'information/ - Ce dossier contient tous les plugin meta information et de code, y compris le web et le code natif, pour chaque plate-forme

plugins/android.json et plugins/ios.json - Ces deux dossiers ont été édités maintenant contenir une référence au réseau de l'information plugin. C'est là que vous verrez le fichier config-munge peu de JSON. Lorsque vous ajoutez plus de plugins, ce fichier va croitre de faire référence à tous d'entre eux. Ce fichier indique les outils de ligne de commande ce code, il doit le remplacer et dans lequel les fichiers. Par exemple, après l'ajout de l'cordova-plugin-réseau-informations plugin, vous allez voir ceci en /assets/www:

/www/

Cela dit les scripts à écrire le nom de la fonction en config.xml (encore une fois, pour iOS, ce sera différent, puisque l'application au niveau du fichier de config est dans un emplacement différent sur iOS!), et aussi raconte à écrire android.la permission.ACCESS_NETWORK_STATE autorisation en AndroidManifest.xml (vous ne trouverez rien de ce genre sur iOS depuis aucune autorisation n'est nécessaire). (En passant, ce qui est écrit sur chacun de ces fichiers json est définie dans le plugin plugin.xml fichier.)

platforms/android/AndroidManifest.xml - Les outils CLI a pris soin d'ajouter selon la permission ont été définis dans le plugin xml du fichier à AndoridManifest. Oui, cela arrive lorsque vous n' config.xml. Ces autorisations sont directement copiés à partir de ce qui est dans le plugins/android.fichier json. Ces autorisations sont également supprimés lorsque vous 'rm' un plugin. Toutefois, l'édition de ces fichiers est effectué intelligenty, que vous pouvez ajouter des choses à AndroidManifest.xml et ils continuent.

platforms/android/assets/www/cordova_plugins.js - Ce fichier est enterré à l'intérieur du code html de ressources qui feront de votre appli finale - ces ressources (à peu près tout dans /plates-formes/) ne doit pas être modifiée par vous, car ils seront remplacés par les outils CLI assez fréquemment. Ce fichier est utilisé par Cordova au moment de l'exécution pour charger le plugin code que vous avez ajouté; il s'occupe aussi de la cartographie du JavaScript espaces de noms pour les fichiers réels (c'est le "clobbers" déclaration). Par exemple, je vois:

/platforms/android/res/xml/config.xml

cela signifie que dans votre code d'application, /platforms/ios/AppName/config.xml et cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git permettra à la fois de carte pour le code contenu dans /plugins/android.json.

platforms/android/res/xml/config.xml - C'est le niveau plate-forme config.xml de fichiers pour Android. Ce fichier est créé par les outils CLI. Beaucoup de l'information que vous écrivez dans votre top niveau config.xml (/MyApp/www/config.xml) est copiée ici, mais pas à tous (et il y a plus de trucs, je ne suis pas sûr de savoir exactement où les autres choses vient de.) C'est ce fichier qui est lu par Android quand il est en cours d'exécution de votre application et il a besoin de vérifier votre configuration de données. Par exemple, Cordova code Android vont l'utiliser pour voir quels plugins sont installés et qui classes natives de la carte à laquelle les espaces de noms. Je pense que la seule façon pour vous de modifier ce est par l'utilisation de la /des fusions ou d'un dossier que j'ai mentionné ci-dessus.

plates-formes/ios/{Nom}.xcodeprojcj/projet.pbxproj - Le iOS équivalent de AndroidManifest.xml

plates-formes/ios/{Nom}/config.xml - C'est le niveau plate-forme config.xml fichier pour iOS. Voir comment il est dans un endroit différent que sur Android? (par exemple, pas dans /res/xml/config.xml?) Ce fichier est automatiquement mise à jour par l'interface CLI et vous ne devriez pas y toucher.

platforms/ios/www/cordova_plugins.js - Le même fichier existe sur Android (mais dans un autre endroit) et a le même but: aider à Cordoue en charge vos plugins lors de l'exécution lorsque quelqu'un est à l'aide de l'application

Je pense que c'est à peu près décrit tous les fichiers et dossiers qui sont utilisés dans un projet cordova.

Espérons maintenant vous pouvez voir que vous ne conviendrait en fait de l'édition de l' { "prepare_queue": { "installed": [], "uninstalled": [] }, "config_munge": { "res/xml/config.xml": { "/*": { "<feature name=\"NetworkStatus\"><param name=\"android-package\" value=\"org.apache.cordova.networkinformation.NetworkManager\" /></feature>": 1 } }, "AndroidManifest.xml": { "/*": { "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />": 1 } } }, "installed_plugins": { "org.apache.cordova.network-information": { "PACKAGE_NAME": "io.cordova.hellocordova" } }, "dependent_plugins": {} } le fichier. Ce fichier sera utilisé pour construire l' res/xml/config.xml et cordova plugin add, qui sont utilisés par Cordova lorsque le emballés application est en cours d'exécution. Des parties de ce fichier sera utilisé pour modifier le AndroidManifest.xml et le projet.pbxprojc fichiers (pour Android et iOS, respectivement.)

C'est ce qui explique pourquoi vous êtes toujours en mesure d'utiliser l'accéléromètre de votre application, même après la suppression de l' { "file": "plugins/org.apache.cordova.network-information/www/network.js", "id": "org.apache.cordova.network-information.network", "clobbers": [ "navigator.connection", "navigator.network.connection" ] } lignes - ils étaient juste être recopiée dans la plate-forme de niveau config.xml à partir de l'application principale de large config.xml

Je suppose que la seule chose à comprendre, c'est comment vous pouvez modifier la plate-forme des fichiers de configuration spécifiques; par exemple, comment pouvez-vous modifier le AndroidManifest.xml fichier? Eh bien, il s'avère que vous pouvez simplement modifier l' navigator.connection le fichier directement la ligne de commande est assez intelligent pour ne pas effacer vos personnalisations lorsqu'il ajoute automatiquement ou supprime le plugin permissions. Donc, dire que pour une raison quelconque vous avez besoin à l'appui d'une baisse de la version d'Android que ce Cordova prend en charge, il vous suffit de modifier l'objet et elle persiste si votre navigator.network.connection des appels.

J'espère que clarifie les choses, n'hésitez pas à poser plus de questions!

22voto

Depuis cordova 3.5 , nous pouvons conserver les plugins dans le fichier config.xml

 <feature name="Network Information">
    <param name="id" value="org.apache.cordova.network-information" />
    <param name="version" value="0.2.10" />
</feature>
 

La commande suivante va récupérer les plugins définis dans config.xml

 cordova restore plugins --experimental
 

La commande suivante va écrire vos plugins installés actuels dans config.xml

 cordova save plugins --experimental
 

Source: http://cordova.apache.org/news/2014/07/10/tools-release.html

5voto

Sam Thompson Points 593

Config.xml est principalement utilisé par la compilation de phonegap.

Si vous utilisez phonegap 3, vous devez gérer vos plugins à l'aide de la CLI:

 $ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git
 

Le seul fichier config.xml à modifier est /www/config.xml. Les autres sont automatiquement générés à partir de celui-ci lorsque vous construisez votre projet à l'aide de:

 $ phonegap build ios
 

-2voto

Hazem Hagrass Points 1435

Vous pouvez vérifier ceci pour le plugin Accelermator : plugin Phonegap Acceleramator .

Aussi, vous pouvez y rechercher tous les plugins dont vous avez besoin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X