xcode 4 + phonegap ... JS beim Build nicht aktualisieren?

8

Ich bin auf ein seltsames Problem gestoßen, bei dem ich mich in der letzten Stunde am Kopf kratze.

Ich arbeite an einer iPad-App mit Xcode 4 und PhoneGap. Es verwendet jQuery. Ich habe alle meine JS in eine Datei scripts.js gelegt.

Die Dinge funktionieren gut.

Ich habe ungefähr eine Stunde damit verbracht, viel CSS zu optimieren. Ich würde die CSS-Datei aktualisieren, die App stoppen, neu erstellen und zum iPad-Simulator oder iPad schieben. Das hat gut funktioniert. Jede Aktualisierung der CSS-Datei spiegelt sich im neuen Build wider.

Ich musste dann die JS-Datei aktualisieren. Ich konnte die Dinge nicht zum Laufen bringen und dann wurde mir klar, dass keiner meiner JS-Änderungen tatsächlich in den Build eingebaut wurde. Ich habe schließlich meine JS-Datei vollständig ausgeblendet, neu erstellt und es wird immer noch nicht aktualisiert.

Die Datei, die ich aktualisiert habe, wird im Finder im Projektordner aktualisiert (ich kann mit der rechten Maustaste auf "Ansicht im Finder" klicken und diese Datei wird tatsächlich aktualisiert).

Ich bin also ratlos. Speichert der xcode-Compiler die JS-Datei irgendwie, anstatt die aktualisierte Datei zu holen? Gibt es eine Möglichkeit, es zu zwingen, den aktualisierten JS zu greifen?

    
DA. 26.06.2011, 19:17
quelle

11 Antworten

4

Nun, nach etwas mehr Googeln scheint das ein häufiges Problem zu sein. Xcode scheint Dateien zu cachen, auch nachdem Sie sie bearbeitet haben.

Eine Option scheint zu sein, den Befehl 'clean' vor einem neuen Build auszuführen. Ich habe das versucht, kein Glück.

Andere Lösungen scheinen jedes Mal die .plist-Datei neu zu erstellen. Ich verstehe das (noch) nicht, was das automatisch anbetrifft, aber ich fand diese Problemumgehung:

  • Öffnen Sie Ihre .plist-Datei
  • ändere etwas (in meinem Fall benenne ich jedes Mal eine der App-Icon-Dateien um)
  • speichern und erstellen

Das zwingt magischerweise xcode, endlich alle aktualisierten Dateien zu packen und einen korrekten Build zu erstellen.

Ich kann nicht erklären, warum Xcode vollkommen glücklich scheint, wenn er meine aktualisierte .css-Datei jedes Mal packt, aber die .html- oder or .js-Dateien nicht aktualisiert, ohne diese .plist-Datei zu bearbeiten.

Scheint so, als hätte Apple immer noch ein paar Bugs, die es zu lösen gilt. Ich denke, wir müssen geduldig auf das nächste 4gig .x-Release warten. ;)

    
DA. 26.06.2011, 23:26
quelle
10

Ich fand es notwendig, die Option-Taste zu halten, wenn ich auf den Menübefehl klicke, der den Befehl von "Clean" in "Clean Build Folder ..." umwandelt und dadurch meine Assets aktualisiert.

    
You Can Code It 18.08.2011 02:09
quelle
3

Fügen Sie Ihrem Ziel in XCode einfach eine neue Build-Phase "Run Script" hinzu und fügen Sie diese ein:

%Vor%     
kikko 17.04.2012 19:06
quelle
2

Ich habe gerade kein Mac, aber nur wenige Dinge, die ich ausprobieren kann:

  • Versuchen Sie, Ihre Projekt-Build (oder Prebuild oder etwas) -Aktion zu sehen, wo der www-Ordner kopiert werden soll.

  • Versuchen Sie index.html zu ändern und sehen Sie, ob es funktioniert.

  • Versuchen Sie, Ihren JavaScript-Code in das index.html -Skript-Tag einzufügen

  • Versuchen Sie, Ihr Javascript zu validieren (zum Beispiel: Google Closure Compiler) und prüfen Sie, ob es Probleme hat

petraszd 26.06.2011 20:43
quelle
2

Keines davon funktionierte für mich: (

Der einzige Weg, wie ich das Ding dazu bringen kann, html und js zu aktualisieren, ist die Ausführung eines "corodova run ios" in der Befehlszeile.

    
bulltorious 21.02.2014 19:21
quelle
1

Suchen Sie die Datei copy-www-build-step.sh .

Meine war in [project_folder]/platforms/ios/cordova/lib/copy-www-build-step.sh

Suchen Sie in dieser Datei die Zeilen beginnend mit rsync -a "...

Füge -c zu den rsync-Zeilen hinzu, so dass sie rsync -a -c "...

bereit machen

copy-www-build-step.sh ist das Skript, das die Dateien von www / in die App-Datei kopiert. rsync ist der Befehl zum Kopieren von Unix-Dateien, den sie verwenden. Ohne -c vergleicht rsync einfach die Dateigröße für jede Datei und jeden Ordner und kopiert sie, wenn sich die Größe geändert hat, und einige Leerzeichen oder Anführungszeichen zählen nicht als ausreichend für eine Änderung. Mit der Option -c werden die Prüfsummen überprüft und die Prüfsummen verglichen, wodurch auch kleinste Änderungen erfasst werden.

Ich denke, das wird am besten funktionieren, weil es keine Problemumgehung ist, sondern tatsächlich die Ursache des Problems behebt.

    
user3258709 31.01.2014 19:51
quelle
0

Ich hatte gerade dieses Problem, und der Build-Phase-Befehl hier (der jetzt eigentlich vom Standard-Phonegap-Projekt verwendet wird) funktionierte für mich nicht, da ich meine Dateien auf einer Parallels Windows VM in Visual Studio bearbeite.

Was ich getan habe, war dies in der Build-Phase meines Projekts:

%Vor%

Das ist im Grunde eine rekursive Berührung. Ich habe dann Visual Studio eingerichtet, um die Datei immer neu zu laden, wenn sie gespeichert wurde. Hoffe, das hilft.

    
Jeff 03.10.2012 11:18
quelle
0

Ich bin mir nicht sicher, was es war, aber ich habe Folgendes getan:

  1. Ein Symbolwert in meinem MyProject-Info.plist wurde geändert
  2. Beende den Simulator
  3. Product -> (hold option) -> Clean Build Folder
  4. Ausführen
Garrett 29.10.2012 21:24
quelle
0

Ich fand eine Kombination all dieser Antworten zur Arbeit, versuche die akzeptierte Antwort hier

XCode Build aktualisiert JS und HTML nicht

    
Ksliman 12.03.2014 19:25
quelle
0

Ich hatte das gleiche Problem mit dem iOS-Simulator, ich habe die meisten der obigen Vorschläge ohne Erfolg ausprobiert, es würde meine Änderungen nicht aufnehmen. Später kam mir eine andere mögliche Lösung, die funktionierte:

Löschen Sie die App aus dem Simulator. (dh. Klicken und halten Sie auf das Symbol, dann drücken Sie das X, wenn es zu wackeln beginnt, dann Hardware Home) Führen Sie dann einen Neustart von xCode durch.

(NB: "cordova build ios" wurde ebenfalls benötigt)

    
kris 04.11.2014 14:05
quelle
-1

Keine Lösung der obigen Arbeit schließlich sah ich, dass es zwei index.html file und .js file in dem Projekt gibt, das mit dem Kommandozeilenwerkzeug von Cordova erstellt wurde

Nehmen Sie die Änderungen wie nachfolgend unter Bereitstellungsordner angegeben vor

    
iphonemaclover 23.02.2016 09:50
quelle

Tags und Links