Cordova / Phonegap: Live Update Codebase

Wir verwenden Cordova zusammen mit AngularJS für iOS und Android Anwendungen.

Ein großer Nachteil von iOS sind die langen Testzeiten von Apple. Im Google PlayStore ist deine App fast sofort oder innerhalb weniger Stunden verfügbar. Aber Apple nimmt Zeit, um deine App zu überprüfen, auch wenn es nur eine kleine Veränderung ist.

  • Wie kann ich Android-Support-V7-Bibliothek in SBT Android-Projekt laden?
  • Alle Artikel in AutocompleteTextView anzeigen, ohne Text zu schreiben
  • NullPointerException bei android.widget.ArrayAdapter.createViewFromResource
  • Android Palette: Warum nicht mit diesem Bild arbeiten?
  • Gradle: Datei aus dem Android-Assistenten ausschließen
  • Zeige CollapsingToolbarLayout Titel NUR, wenn zusammengebrochen
  • Also dachte ich, wenn es eine Möglichkeit gibt, eine Art Live-Update zu unterstützen.
    Das heißt, ich könnte eine ZIP-Datei oder etwas anderes mit einer neuen Codebasis, meine App überprüft für Updates und installiert dann die neuen Dateien.

    Ich habe etwas von appmobi gelesen, aber gibt es irgendwelche Open-Source-Lösungen?

  • Android: Wie finde ich den Namen der Android-Version programmgesteuert?
  • Mehrere Push-Nachrichten: Der Inhalt des Adapters hat sich geändert, aber ListView hat keine Benachrichtigung erhalten
  • Flugzeug-Modus in Jelly Bean
  • Android füllen Prozent des Layouts
  • BroadcastReceiver onReceive ausgelöst, wenn registriert
  • Wie kann ich einfach Eclipse-Android-Projekt in Intellij IDEA 10 importieren
  • 8 Solutions collect form web for “Cordova / Phonegap: Live Update Codebase”

    cordova-app-loader ist ein einfach zu bedienendes Plugin, um App-Dateien über 3 einfache Schritte zu aktualisieren:

    1. check() für ein neues Manifest
    2. download() Dateien
    3. update() Ihre App!

    Es unterstützt Android und iOS

    Ich kenne keine fertigen Lösungen dafür, aber es sollte einfach genug sein, so etwas auf eigene Faust zu programmieren. Hier sind einige Punkte, um dich zu beginnen und zu betrachten:

    • Wenn du Updates per Zip verteilen willst, brauchst du ein nativ Plugin, das die Extraktion verarbeitet
    • Sie sind möglicherweise nicht in der Lage, Dateien im Standardspeicherort Ihrer App zu überschreiben (abhängig von OS). Also, alle Dateien, die Sie in der Zukunft aktualisieren möchten, müssen in einem Ordner sitzen, in dem Ihre App Lese- / Schreibzugriff auf (iOS: zB Bibliothek oder Dokumente Ordner)
    • Jetzt musst du einfach das Zip-Paket herunterladen, den Zip in deinem gewählten Verzeichnis entpacken und deine App neu starten / neu laden.
    • Du wirst nicht in der Lage sein, native Plugins zu aktualisieren!
    • Apfel vermisst das wohl nicht, da man die ganze Applikation ändern kann, ohne ihren Review-Prozess zu bestehen

    Ich tue dies in meiner Cordova App und habe keine Probleme mit ios App Store Review.

    Ich benutze Jquery's Ajax-Funktion, um sowohl ein Javascript als auch eine CSS-Datei von einem Server herunterzuladen, den ich ohne eine App Store-Genehmigung ändern kann und dann kann ich diese Scripts einspritzen, sobald sie beim App-Start heruntergeladen wurden.

    Ich habe versucht, die cordova Datei api und ich würde dann speichern Sie die Datei lokal, aber offline Unterstützung ins't die wichtig für mich im Moment und Jquery's ajax ist viel einfacher.

    Hier ist der jquery code ich benutze. Ich habe eine Bündel-ID, die ich benutze, um zu erkennen, ob eine neue Javascript-Datei zur Verfügung steht. Andernfalls wird jquery's ajax die vorherigen Anfragen caches, um die Downloadzeit zu beschleunigen.

    Diese Lösung lässt Sie eine Untermenge Ihres Codes dynamisch sein. Ich habe noch einen Basissatz von Code, der mit der App gebündelt wird, zusammen mit nativen Plugin js und native Code, die durch den App Store gehen müssten. Aber dieses atleast lässt mich Bug-Fixes drücken, ohne durch den App Store zu gehen.

    Ansonsten würde ich mir eine solche Lösung anschauen: http://docs.build.phonegap.com/en_US/tools_hydration.md.html

     function insertScript(version) { var scriptUrl = ""; try { // get javascript file... scriptUrl = mobileWebServiceUrl + "/DynamicContent/Bundles/Scripts/dynamic"; scriptUrl += "_" + bundleVersion.replace(/\./g, "_") + ".js?v=" + version; console.log("downloading script: " + scriptUrl); // Allow user to set any option except for dataType, cache, and url options = { dataType: "script", cache: true, url: scriptUrl }; // Use $.ajax() since it is more flexible than $.getScript // Return the jqXHR object so we can chain callbacks return $.ajax(options).success(function(response) { console.log("insertScript success"); dynamicContentScriptLoaded = true; }); } catch (e) { //console.error(e); ReportError("problem downloading javscript: " + scriptUrl); } } function insertCSS(version) { try { // get css file... var cssUrl = mobileWebServiceUrl + "/DynamicContent/Bundles/Css/dynamic"; cssUrl += "_" + bundleVersion.replace(/\./g, "_") + ".css?v=" + version; console.log("downloading dynamic css: " + cssUrl); $.ajax(cssUrl) .success(function (response) { console.log("successfully downloaded dynamic css"); var script = document.createElement("style"); script.type = "text/css"; script.innerHTML = response; $('head link').each(function () { if ($(this).attr('href').search('MobileFrame') > -1) { $("#MobileFrameCSS").before(script); } }); dynamicContentCssLoaded = true; // TODO: implement caching at a later date //if (isPhoneGap()) // saveFile("DynamicStyles", response); }); } catch (e) { ReportError("problem downloading css"); } } 

    Nun, Adobe bietet genau diesen Service in ihrem Phonegap Build Service an. Es heißt Hydratation .

    Das Beispiel zeigt es mit Android und iOS Plattformen, so dass ich vermute, sie haben es kompatibel mit dem iOS Dev Programm Lizenzvereinbarung.

    Wenn Sie Cordova verwenden, müssen Sie wahrscheinlich auf die Phonegap-CLI wechseln, wenn Sie ihre Build-Cloud-Dienste nutzen möchten, was im Grunde das gleiche ist wie Cordova mit einigen zusätzlichen Befehlen zum Hochladen auf ihre Cloud usw.

    Ich denke, es gibt ein Plugin wie Splashscreen, die auch einige kleine Änderungen haben (mit <gap> für params in config.xml anstelle von <preference> ). Wieder, wenn Hydration das Problem für Sie löst, sind die Änderungen geringfügig und man bekommt ein wirklich nettes Feature.

    Ich denke, die beste Wahl wäre, nicht zu versuchen, dies mit Phonegap zu tun, sondern identifizieren Sie Ihre dynamischen Teile und implementieren diese in Javascript.

    Ja, ich meine, Sie sollten in der Tat Javascript selbst ohne Phonegap verwenden, zum Beispiel über JavaScriptBridge: https://github.com/kishikawakatsumi/JavaScriptBridge

    Es kann mehr Arbeit annehmen, um zunächst Ihre App in einen "statischen" Teil (Ihre PhoneGap App) und einen dynamischen Teil (dynamisch erstellte Ansichten über JavascriptBirdge) umzuwandeln, und interacte scheinbar zwischen ihnen. Aber meiner Meinung nach wird das letztlich das beste Software-Design sein.

    Allerdings stellen Sie auch sicher, dass Sie immer noch Apples AppStore Anforderungen erfüllen.

    Das Meteor- Framework bietet genau diese Funktionalität, wenn es mit PhoneGap kombiniert wird. Es wird sogar von Apple in der neuesten Entwicklervereinbarung sanktioniert. Hier sind einige technische Details und dann einige über Apples Ansicht darauf .

    Ich denke, es gibt keine solche Lösung zur Verfügung, aber Sie können es durch programmatische Weise tun.Sie können Ihre cardova App aktualisieren, indem Sie Dateien vom Server abrufen und aktualisieren.

    Check out CodePush von Microsoft . Arbeiten mit Cordova und Reagieren Native.

    Erscheint sehr ähnlich der "Live Update" -Funktion von Ionic Cloud.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.