2016-04-22 13 views
0

Ich habe 2 Kopien für meine Arbeit in Cordova seit den letzten 2 Jahren und es funktioniert ohne Fehler.gemeinsamen www Ordner und alle Dateien für alle Plattform in Cordoba

  1. für Android/ios
  2. Windows phone

in beiden Kopien von nur plattformspezifischen Änderungen sind da. Bedeutet im Windows-Telefon kann es nicht erlauben, HTML-Dateien zu laden, so dass ich alle HTML-Dateien in Skript-Tag und laden Sie in die Hauptindex.html für make thing arbeiten und es funktioniert in Windows Phone und in der zweiten Kopie habe ich normale HTML-Dateien getrennt als Android und iOS hat kein Problem mit externen HTML-Dateien laden.

so meine Frage: Gibt es eine Möglichkeit, den gesamten Code in einer einzigen Kopie zu verschmelzen und mit dem gleichen www-Ordner-Code wird in Android, IOS und Windows Phone auch funktionieren?

Vielleicht ist es nicht möglich, wie ich durch becuase Windows Telefon habe einige andere Dateistruktur dann Android/IOS.

Bitte führen Sie, wenn jemand einige gemeinsame Arbeit für alle Plattformen kennen.

+0

Nein, Sie können nicht, dass Sie unabhängig mit jeder Plattform arbeiten müssen. Was du gerade machst, ist nur der Weg. –

+0

danke @jaydroider für Ihr Feedback, aber ich kann auch auf einige andere Vorschläge warten. – Naitik

Antwort

1

Sie können dazu die Funktion "Zusammenführungen" in Cordova CLI verwenden. Stellen Sie sich vor habe ich ein Projekt, das wie folgt aussieht:

-rw-r--r-- 1 simon staff 1115 Mar 22 19:57 config.xml drwxr-xr-x 3 simon staff 102 Mar 17 21:47 hooks/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 platforms/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 plugins/ drwxr-xr-x 7 simon staff 238 Mar 21 13:11 www/

Mit meinem Anwendungscode alle in www, wie dies organisiert:

drwxr-xr-x 4 simon staff 136 Mar 24 12:42 css/ drwxr-xr-x 4 simon staff 136 Mar 21 13:11 img/ -rw-r--r-- 1 simon staff 1338 Mar 21 15:16 index.html drwxr-xr-x 4 simon staff 136 Mar 22 18:29 js/

Stellen Ich habe sowohl die Android- und iOS-Plattformen installiert und möchten etwas anderes auf jedem tun, ohne viel zu setzen:

if (device.platform === 'Android') { // Android specific code } else { // iOS specific, assuming we are only supporting iOS }

Art von Code in meiner Anwendung. Das skaliert auch nicht auf viele Plattformen (z. B. Windows und BB hinzufügen, und dann hast du jedes Mal mehr if/else oder eine switch-Anweisung).

Um damit zu helfen, kann Cordova CLI Code zusammenführen, und sucht nach einem Ordner der obersten Ebene namens Merges. Also einen von der im selben Ordner machen Sie Ihren config.xml in ist, so dass nun Projekt wie folgt aussieht:

-rw-r--r-- 1 simon staff 1115 Mar 22 19:57 config.xml drwxr-xr-x 3 simon staff 102 Mar 17 21:47 hooks/ drwxr-xr-x 4 simon staff 136 Mar 22 17:47 merges/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 platforms/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 plugins/ drwxr-xr-x 7 simon staff 238 Mar 21 13:11 www/

Dann erstellen:

merges/android merges/ios

Alles, was du da drin stecken erhalten kopiert in den plattformspezifischen www-Ordner und überschreibt Sachen im selben Pfad von deinem Hauptwww-Ordner, oder wird hinzugefügt, wenn es nichts von dem gleichen Namen/Pfad in www gibt.

Beispiel:

ls -lF merges/android/img total 16 [email protected] 1 simon staff 7626 Mar 21 13:23 logo.png

Dieses Bild logo.png nur www/img/logo.png für Android ersetzen. Ich kann das gleiche für iOS tun (füge merges/ios/img/logo.png hinzu) oder verwende das Standardbild (www/img/logo.png).

Dies kann für jede Art von Datei (JS/CSS/img/JSON/was auch immer), die Sie benötigen, auf einer Plattform spezifischen Basis getan werden.

Es ist nicht notwendig, ein Hook-Skript zu schreiben, damit dies funktioniert, das CLI führt es automatisch aus, wenn Sie cordova build für jede Plattform ausführen.

Dokumentation zu diesem Konzept ist in der Cordova CLI docs.

+0

hi @simon danke für deine antwort, aber ich habe frage, wenn ich cordova root 'www' ordner irgendwelche dateien ändern wird es nicht direkt für alle paltforms auswirken? measn ich muss alle plattformspezifischen Änderungen in Merges/related-Plattformen ändern .. Ich muss Änderungen im Haupt www Ordner Datei Cordova Auswirkungen auf alle Plattformen auswirken. Ich möchte meinen Code als Einzelkopie für alle Plattformen verwenden. Ich kann Filter für Plattformen in Java-Skript mit device.platform tun, aber es funktioniert für Android und iOS wird es nur für wp8 auch funktionieren? Danke – Naitik

+0

Ja, alles, was Sie in 'www' ändern (Ordner im selben Ordner wie' config.xml'), wird für jede Plattform in Ihrem Projekt ('platforms/ios/...') in den Ordner 'www' verschoben , 'plattformen/android/...' usw.). Um plattformspezifische Dinge zu tun, benutze Merges wie beschrieben, da du den Ordner plattformen als Buildartefakt behandeln solltest und keine Sachen drin haben solltest, die in die Quellcodeverwaltung eingecheckt sind. Die von mir beschriebene Methode funktioniert für alle Plattformen, die Cordova unterstützt, weil es eine Eigenschaft der Cordova CLI ist. –

+0

aber cordova android/ios hat eine andere Dateistruktur als wp8, also wird es funktionieren, wenn ich plattformspezifische Änderungen ändere? Bedeutet android/ios funktioniert gut zusammen aber wird wp8 mit android/ios Dateistruktur arbeiten? Wenn ja, können Sie bitte ein Beispiel dafür geben. danke – Naitik