2017-03-04 5 views
0

Ich habe eine veröffentlichte App im Play Store. Das Problem, mit dem ich konfrontiert bin, ist, dass es so aussieht, als ob Cordova 6 (ich habe gerade auf 6.5 aktualisiert) die Release-Version-Generation geändert hat. Hier ist meine config.xmlCordova 6 Android-Version Ausgaben

<widget android-packageName="com.myapp" id="com.myapp" ios-CFBundleIdentifier="com.myapp" version="1.2.38" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 

ich bauen sowohl native als auch Überweg baut für meine Anwendung mit den folgenden Regeln:

  • wenn API-Version> = 21, installieren Sie native Version cordova build android --release -- --minSdkVersion=21
  • Für andere Versionen, Überweg Version cordova plugin add cordova-plugin-crosswalk-webview && cordova build android --release

Hier ist der Versionscode meiner veröffentlichten Apps installieren: Jetzt

nach cordova auf 6,5 Upgrade, wenn ich meine Build-Prozess haben, Wechsel Version 1.2.39 die Überweg Versionen verwendet, um die richtige Version Code 102392 für ARM und 102394 für x86. jedoch die native Version hat nun den Versionscode 10239

Dies verursacht ein Upgrade Problem, weil meine aktuelle nativen Code Version "102389" ist, das ist> "10239"

Ich habe versucht, das Hinzufügen android-version in meinem config.xml wie folgt aus:

android-versionCode="102390" version="1.2.39" 

Dies jedoch führt zu

  1. Xwalk x86 version = 1.023.904
  2. Xwalk Arm version = 1023902
  3. native Version = 102390

Wie Sie die Xwalk Versionen haben jetzt eine viel größere Anzahl als meine bestehende Produktion baut sehen. Das ist auch nicht richtig, denn die Xwalk-Versionen werden gegenüber der nativen Version sogar in Geräten mit SDK> = 21 Vorrang haben, was unerwünscht ist. Wie behebe ich das?

Das Kernproblem ist, dass Cordova Xwalk mehrere Arch-Dateien erstellt und die Versionsberechnung mit 10 multipliziert und der Plattformcode hinzugefügt wird. Die native Version ist als ein Paket aufgebaut und wird nicht mit 10 multipliziert. Ältere Versionen von cordova haben das anscheinend korrekt gehandhabt.

Antwort

0

Ich habe eine Problemumgehung durch Hinzufügen eines manuellen Versionscodes nur für den nativen Build implementiert. Ich sollte das wirklich nicht tun müssen. Es funktioniert, aber ich werde das nicht akzeptieren, in der Hoffnung, dass ich bessere Antworten bekomme.

Hier ist der Zusatzcode für den nativen (nicht XWalk build)

APPVER=`cat config.xml | grep "widget " | sed 's/.* version=\"\([^\"]*\)\" xmlns.*/\1/'` 
a=(${APPVER//./ }) 
vcode="$(((a[0]*10000+a[1]*100+a[2])))9" 
cordova build android --release -- --minSdkVersion=21 --versionCode=${vcode} 

Dies erzeugt nun Version Codes, die wie vorgesehen sind: enter image description here