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!