web-dev-qa-db-fra.com

XCode Build ne met pas à jour JS et HTML

J'utilise XCode 5.0.2 et Cordova 3.4.0-0.1.3 - Ce que je découvre, c'est après avoir créé le projet à l'aide de la Cordova CLI et en l'ouvrant dans XCode, aucune modification du fichier index.html et du fichier index.js n'est jamais reportée sur le simulateur lorsque je clique sur Exécuter. Je dois ouvrir un terminal et émettre une commande Cordova Build, puis exécuter le simulateur et cela fonctionne

J'ai suivi toutes les instructions ici:

Phonegap - développement et lancement d'application sur simulateur

xcode 4 + phonegap ... ne met pas à jour JS lors de la construction?

Et rien ne fonctionne! n'importe qui a une solution à cela, car il est devenu pénible de changer d'allée et de retour. 

18
Ksliman

Ainsi, après de nombreuses recherches, il semble que j'ai trouvé une solution qui fonctionne. Voici ce que j'ai fait. Après avoir examiné d'autres questions sur Stackoverflow, j'ai trouvé quelqu'un qui disait que cela fonctionnait pour eux. 

Recherchez le fichier appelé copy-www-build-step.sh.

Le mien se trouvait dans [Dossier_projet] /platforms/ios/cordova/lib/copy-www-build-step.sh

Dans ce fichier, trouvez les lignes commençant par rsync -a "...

Ajoutez -c aux lignes rsync pour qu’elles soient prêtes rsync -a -c "...

Eh bien, j'ai essayé ça et ça n'a pas marché tout seul. J'ai aussi essayé la réponse de Ville et ça s'est rapproché mais pas de cigare. Enfin, j'ai pris ce que la commande de Ville et mis dans le fichier copy-www-build-step.sh 

donc ma première ligne est maintenant 

cd /path/to/your/cordova/project/
cordova prepare

SRC_DIR="www/"
DST_DIR="$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME/www"
COPY_HIDDEN=
ORIG_IFS=$IFS
IFS=$(echo -en "\n\b")
.....
.....
.....etc etc 

Et maintenant je fais la modification, et cliquez sur Exécuter, bam tout est mis à jour. J'espère que ça aidera quelqu'un d'autre. 

11
Ksliman

Vous pouvez ajouter un script de pré-action à la construction de votre projet XCode. Pour faire ça:

  1. Sélectionnez Product> Scheme> Edit Scheme dans le menu (ou <sur le clavier).
  2. Sélectionnez Construire> Préactions à gauche
  3. Cliquez sur + et sélectionnez "Nouvelle action de script d'exécution"
  4. Ajoutez un script comme celui-ci:

    cd /path/to/your/cordova/project/
    cordova prepare ios > xcode-prepare-results.txt
    

Désormais, XCode doit toujours exécuter cordova prepare avant de générer votre projet afin de ne pas avoir à passer au terminal. Vous pouvez voir la sortie de prepare dans le fichier xcode-prepare-results.txt.

Notez que, selon la configuration de votre exécutable cordova et le shell que vous utilisez, vous devrez peut-être changer de shell ou modifier votre variable PATH pour que le script trouve cordova. 

12
ville

D'autres réponses à ce sujet ne fonctionnaient pas pour moi ou foutaient les plugins Cordova, par exemple. InAppBrowser, alors j'ai finalement trouvé ceci:

Editez le fichier copy-www-build-step.sh et ajoutez la ligne suivante au début:

cp -fR ../../www/ www/

il devrait donc ressembler à:

...
cp -fR ../../www/ www/ # new code

SRC_DIR="www/"
...

De cette façon, votre code sera mis à jour correctement et vos plugins fonctionneront

7
Yossi Shasho

J'ai également édité le fichier copy-www-build-step.sh , mais vous ne voulez pas utiliser de chemin absolu depuis votre dossier User. Si vous travaillez avec d'autres développeurs, vous devrez le modifier chaque fois que vous extrayez du code.

Ce n'est pas grave, il suffit de changer:

SRC_DIR="www/"

À:

SRC_DIR="../../www/"

UPDATE A travaillé pour Cordova et Phonegap.

5
Ryan Ore

Pour que les fichiers source soient automatiquement copiés du répertoire source www vers le répertoire plateformes/ios/www lorsque vous cliquez sur le bouton Exécuter dans XCode:

Dans XCode, choisissez Produit-> Schéma-> Modifier un schéma ...
Développez le triangle pour Construire-> Pré-actions
Cliquez sur le "+" pour créer une nouvelle préaction

Vous pouvez laisser le paramètre "Shell" vide.
Définissez "Fournir les paramètres de construction de" au projet que vous construisez. C'est important.

Dans la zone de script, entrez:

cd ${PROJECT_DIR}/../..
echo "--- Start ---" > xcode-prepare-ios-results.txt
echo "Running cordova prepare ios command..."
pwd >> xcode-prepare-ios-results.txt
cordova prepare ios --verbose >> xcode-prepare-ios-results.txt
echo "--- Finished ---"  >> xcode-prepare-ios-results.txt

Cela fonctionne pour moi avec XCode 8.2 et Apache Cordova 6.x

5
CodeWeenie

Exécutez "cordova prepare ios" pendant les phases de construction:

  1. Ouvrez Xcode.
  2. Sélectionnez votre projet.
  3. Allez à "Build Phases".
  4. Allez sur "+" pour ajouter une "nouvelle phase de script d'exécution".
  5. Déplacez cette section avant "Copier le répertoire www".
  6. Ajoutez les lignes suivantes (pour Mac):
    • cd /Users/*/YOUR_PROJECT_FOLDER (Changer le dossier de votre projet)
    • /Users/*/.nvm/versions/node/v?.?.?/bin/node node_modules/cordova/bin/cordova prepare ios (Change le chemin en version du noeud)

Après "Play", le dossier www sera automatiquement actualisé!

2
Sbat

@Ksliman Je vous ai un peu modifié le code pour travailler sur mon système et rendre légèrement plus générique. 

sommet du fichier copy-www-build-step.sh

## New Code Begin ###

cd ../../
PATH=${PATH}:/usr/local/bin
cordova prepare ios

## New Code End ###

SRC_DIR="www/"
2
Karman De Lange

Je vous suggère de nettoyer avant de construire votre projet xcode. Et encore une chose, assurez-vous de reconstruire votre projet en utilisant cordova build, et non dans xcode car il est totalement différent.

cordova build yourproject
2
Mohammad Nurdin

Des solutions simples consiste à créer l'application avec Cordova en utilisant:

Sudo cordova build ios

Ensuite, allez à xcode> Produit> Nettoyer

Ensuite, allez à xcode> Exécuter (bouton Play)

2
Alex Harper

tapez simplement:

cordova prepare

sur votre terminal et relancez votre projet dans Xcode

1
Armand Macintosh

Si vous modifiez directement le code HTML à partir du Xcode, vous devez modifier le code/code HTML du dossier intermédiaire, et non du dossier principal.

Dans le dossier intermédiaire, vous aurez la même structure que dans le dossier principal, mais elle sera reflétée directement dans la construction xcode (iOS).

Dossier de transfert

Remarque: les modifications que vous avez apportées au xcode seront remplacées lorsque vous compilerez à nouveau à partir de la compilation/exécution de cordova. Veuillez donc copier vos modifications dans le dossier principal avant d'exécuter les commandes cordova.

Vous pouvez obtenir plus d’informations grâce à cette réponse: But du dossier Staging dans PhoneGap 3.4? Seules les modifications apportées à index.html dans ce dossier sont reconnues?

C'est la solution correcte prise à partir de:

Cordova + Xcode 7.3 (html + Javascript) non modifié ni mis à jour lors de la compilation et de l'émulation

0
KJD

Tout ce que j'avais à faire était d'inclure le chemin d'accès absolu complet à mon projet. Par exemple:

  1. Depuis votre répertoire de projet, vim plates-formes/ios/cordova/lib/copy-www-build-step.sh
  2. remplacez SRC_DIR par le chemin absolu de votre www, SRC_DIR = "/ Users/michael/Documents/Development/SampleMobileApp/www /"
  3. Enregistrez, construisez et vous devriez être prêt à partir.
0
Michael Bordash

Pour moi, il y avait une erreur dans mon code. J'avais simplement besoin d'exécuter npm start pour le localiser.

0
Trip

J'ai trouvé que parfois Cordova s'embrouille ... vous devez faire une "plate-forme cordova rm ios" (laissez vos plugins seuls), puis une "plate-forme cordova add iOS", qui réinstallera tous vos plugins sur votre plate-forme. .. puis essayez à nouveau votre build.

0
Jim Beasley

Chaque fois que j'utilise cordova build, il remplace le contenu du fichier www de ma plate-forme. J'utilise donc cordova compile à la place.

De l'aide:

compile <plates-formes> compile le projet de plateforme sans le préparer

Il est important de simplement compiler les modifications pour ne pas construire des projets entiers, en particulier si vous créez une application mobile pour de nombreuses plates-formes et que vous devez apporter certaines améliorations spécifiques.

0
Adam Faryna