Ajout d'une entrée pour iOS .fichier plist via Cordova config.xml
Je suis nouveau sur le Cordova CLI.
J'ai besoin d'effectuer les étapes suivantes par programmation via Cordova.
- Dans le projet .plist ajouter une nouvelle ligne
- Entrez les valeurs suivantes dans la nouvelle ligne:
- Clé: GDLibraryMode Type:Chaîne de caractères (par défaut) Valeur:GDEnterpriseSimulation
Je pense que j'ai besoin de faire cela dans l'config.xml fichier dans ma racine du projet (ou peut-être l'un dans les "plates-formes" dossier).
Quelqu'un peut m'expliquer comment faire pour ajouter l'entrée au moyen de la config.xml de sorte que l'entrée ci-dessus est ajouté à la compilation?
Je suis à l'aide de Cordova 3.3.1-0.42 (je sais que ce n'est pas la dernière). J'ai déjà fait mon projet et tout est très bien, j'ai juste besoin d'ajouter cette entrée dans le pList.
- Pour ceux qui viennent tard pour cela, les valeurs de réglage dans le projet plist est maintenant prise en charge par Cordova CLI 7 et ci-dessus.
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous pouvez le faire via straight
config.xml
modification. Au moins, je ne vois aucune mention de cela dans les docs: http://cordova.apache.org/docs/en/3.3.0/config_ref_index.md.htmlJe pense que vous devez créer un plugin, car ils peuvent insérer plist entrées: http://docs.phonegap.com/en/3.3.0/plugin_ref_spec.md.html#Plugin%20Specification
Voir la " config-fichier de l'élément de section. Voici une conjecture quant à ce que la section pertinente de la
plugin.xml
ressemblera:Ensuite, vous pouvez installer le plugin:
cordova plugin add <your plugin name or file location>
parent
, tandis que la valeur de la partie doit être à l'intérieur XML. Dans ce cas particulier, il doit être comme suit: <config-file target="*-Info.plist" parent="GDLibraryMode"> <string>GDEnterpriseSimulation</string> </config-file>config.xml
.config.xml
via le<config-file>
de l'élément de voir d'autres réponses pour les détails de la façon de le faire.J'aime vraiment @james solution à l'aide d'un Cordova crochet. Cependant, il y a deux problèmes. Le docs état:
/hooks
répertoire est considéré comme déprécié en faveur de l'hameçon éléments dansconfig.xml
"Voici un Node.js la mise en œuvre à l'aide de la plist MNP package:
De tous le crochet types fournis par Cordova, ceux qui sont pertinents à votre situation sont:
after_prepare
before_compile
Choisir un type de crochet, puis ajouter le crochet de votre
config.xml
fichier:plist
de la bibliothèque a eu quelques problèmes de parser mon fichier plist, j'ai donc été dans l'impossibilité d'utiliser cette solution, et partit avec James, qui utilise le PListBuddy exécutable, qui est inclus sur le Mac. C'était une bonne solution, si seulement laplist
bibliothèque était plus fiable. J'ai fait référence à mon script à partir de laconfig.xml
fichier que vous avez recommandé.Vous pouvez utiliser le PlistBuddy utilitaire à l'intérieur d'un Cordova crochet un script pour modifier l' *-Info.fichier plist.
Par exemple, j'ai le script suivant en vertu de l'
<project-root>/hooks/after_prepare/010_modify_plist.sh
qui ajoute un dictionnaire de la propriété et ajoute une entrée dans le dictionnaire:Assurez-vous de rendre le script exécutable (
chmod +x
).La
true
à la fin du script est parce quePlistBuddy
revient avec une erreur de code de sortie si la clé ajoutée existe déjà, et ne fournit pas un moyen de détecter si la clé existe déjà. Cordova signale une erreur de compilation si le crochet script se termine avec un statut d'erreur. Meilleure gestion des erreurs est possible, mais une douleur à mettre en œuvre.config.xml
comme TachyonVortex recommandé.Remove : NSAppTransportSecurity
juste avant de les ajouter une instruction et il sera tout d'abord supprimer le NSAppTransportSecurity puis l'ajouter. Cela ne devrait pas planter quoi que ce soit.Ce sont les étapes que j'ai fini par le faire pour activer ma demande de partager des fichiers via itunes entre les périphériques.
1.Dans votre application, accédez à votre config.xml. Type de cette pièce dans votre config dans la balise de plate-forme
<platform name="ios">
.2. Ensuite, allez à votre outil de ligne de commande et tapez: cordova préparer
Quelques choses, assurez-vous de cordoue est à jour, et que vous avez ajoutés à la plate-forme ios.
Cette commande installe cordova.
Cette commande ajoute la plate-forme ios.
Ce qui se passe, c'est quand vous exécutez le cordova préparer la commande que vous utilisez Apple Xcode SDK qui est généré dans la plate-forme/ios dossier. De là, vous pouvez voir le fichier plist qui est généré pour votre application, ce qui est étiqueté comme "yourApp-info.plist". De là, vous pouvez voir la nouvelle clé et la chaîne de produit dans le fichier xml de mise en page qui ressemble à ceci:
Aussi mot d'avertissement, mon entreprise a abandonné cette ionique cadre de l'application sur mes genoux il y a quelques semaines (avec un très court délai). Tout ce que je vous dis est basé sur quelques semaines d'apprentissage. Si cela peut ne pas être la meilleure pratique, mais j'espère que cela aide quelqu'un à sortir.
<config-file>
élément a été ajouté dans Cordova version CLI 7, donc avec une version récente de Cordova CLI, cela fonctionne (voir cette github question pour un reproductibles preuve de l'auteur de cordoue-custom-config).Cela ne semble maintenant être possible, à l'aide de la config.xml: au moins certains auteurs de plugins dire. Par exemple, dans les docs pour la Cordova Caméra Plugin, ils discutent de la nouvelle exigence dans iOS 10 que vous fournir une autorisation chaîne de message dans le plist. Pour l'accomplir, ils suggèrent l'exécution du plugin ajouter une commande avec des arguments, donc:
cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="My App would like to access your camera, to take photos of your documents."
C'est le résultat que vous obtenez non seulement un nouveau
<plugin>
ajouté config.xml mais il a une<variable>
enfant:Qui semble alors en corrélation avec les nouvelles clés dans mes infos.plist, peut-être en quelque sorte transmettre des valeurs au moment de l'exécution?
Je mentirais si je disais que je sais exactement comment il fonctionne, mais il semble que ce point de la voie.
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="whatever" />
<string>Random camera usage text</string>
en dessous de la clé pour<key>NSCameraUsageDescription</key>
pour mon build pour être accepté. La configuration n'est pas ajouter le texteMise à JOUR: pour les gens veulent utiliser l'appareil avec iOS >= 10.
Cela signifie, par rapport à la normale, vous pouvez config plugin:
Mais pour l'instant, vous ne pouvez pas config
NSCameraUsageDescription
etNSPhotoLibraryUsageDescription
dans le plugin. Vous avez besoin de config dans la plate -> iOS projet Xcode, ou dans*-Info.plist
fichier.En savoir plus: https://www.npmjs.com/package/cordova-plugin-camera
Je suis à l'aide de la suite dans les ionique 3 sans aucun plugin supplémentaire ou des importations et je pense que cela pourrait être utile pour les autres:
Vous pouvez définir le nom d'affichage dans l'application plist en modifiant directement le ios.json dans le répertoire des plugins.
Adjonction, à la config_munge.les fichiers de la section de l'ios.fichier json fera l'affaire et qu'elle sera maintenue même lors de l'utilisation de la CLI.
Voici un exemple complet
/plugins/ios.json
seront perdues lors de l'exécution decordova platform remove ios
suivie parcordova platform add ios
. Deuxièmement, @Red2678 demandé de trouver une solution à "réaliser la modifier par programmation via Cordova ... de sorte que la nouvelle entrée est ajoutée au moment de la compilation."@TachyonVortex solution semble être la meilleure option, mais s'écroulait dans mon cas. Le problème a été causé par un vide NSMainNibFile champ qui n'est pas droit convertis par le plist package NPM. Dans le .plist fichier
est converti à:
Je l'ai corrigé en ajoutant le script:
Le script ressemble enfin (scripts/my-hook.js):
et config.xml:
patch_plist.js
dans lehooks/after_platform_add
répertoire avec ce code. Mais j'ai toujours<key>NSMainNibFile</key><string>NSMainNibFile~ipad</string>
dans mon fichier plist. Aucune idée de comment je pourrais résoudre ce problème s'il vous plaît?J'ai utilisé ce plugin pour résoudre le problème, peut-être que cela peut vous aider :
https://www.npmjs.com/package/cordova-plugin-queries-schemes
Si vous tentez de modifier un
.plist
dans un natif iOS plugin avec une<config-file>
balise dans votreplugin.xml
, voici ce que vous devez faire:Assurez-vous que votre
.plist
est xml, pas binaire! Vous pouvez utiliserplutil
pour convertir un fichier binaire.plist
en xml, et de s'engager pour le contrôle de version.plutil -convert xml1 Info.plist
Les instructions pour
<config-file>
indiquent quetarget=
est relative à l'généré xcode projet àplatforms/ios/<project>/
, mais j'ai trouvé que j'avais besoin de la faire précéder d'un caractère générique pour mon chemin pour le faire fonctionner:target="*/Resources/MyResources.bundle/Info.plist"
Si vous souhaitez ajouter une clé dans le niveau supérieur de la
.plist
, vous devez définir le parent de l'égalité au nom de la clé, puis un nid<string>
l'étiquette et de la valeur. À l'aide d'un<array>
ou<dict>
comme des exemples montrent cause ces touches pour être imbriquées à l' sousparent
.Voici un exemple complet qui fonctionne pour moi pour l'ajout de plusieurs les propriétés de niveau supérieur:
Je préfère le after_prepare crochet pour les grands projets, ou si vous avez plusieurs plugins en utilisant les mêmes autorisations. Mais vous pouvez toujours aller le chemin le plus simple:
simplement:
- supprimer le plugin qui nécessite le niveau d'autorisation souhaité
- ajouter à nouveau avec --enregistrer
- dans config.xml le plugin dispose désormais d'une nouvelle variable avec une description vide que vous pouvez remplir
- maintenant construire ios avec-la libération et ils seront ensemble.
vous avez juste besoin étapes suivantes
1.