2017-03-04 66 views
0

我有一個在Play商店發佈的應用程序。我面臨的問題是它看起來像Cordova 6(我剛剛升級到6.5)已經改變了發行版本的產生。這是我的config.xml科爾多瓦6安卓版本問題

<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"> 

我建立本地和人行橫道建立我的應用程序的規則如下:

  • 如果API版本> = 21,安裝本地版本cordova build android --release -- --minSdkVersion=21
  • 對於其他版本,安裝人行橫道版本cordova plugin add cordova-plugin-crosswalk-webview && cordova build android --release

這是我發佈的應用程序的版本代碼: enter image description here

現在,升級科爾多瓦到6.5,當我做了我的構建過程中,改變版本39年1月2日後人行橫道版本中使用正確的版本代碼102392爲ARM和102394爲86。 然而,原生版本現在有版本代碼10239

這會導致升級的問題,因爲我現在的原生代碼版本是「102389」,這是>「10239」

我試圖將Android系統的versionCode我config.xml中像這樣:

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

然而這導致

  1. Xwalk x86版= 1023904
  2. Xwalk arm版= 1023902
  3. 原生版本= 102390

正如你所看到的Xwalk版本現在有一個更大的數字比我的現有生產的基礎之上。 這也是不對的,因爲即使在SDK> = 21的設備中,Xwalk版本也會優先於本地版本,這是不受歡迎的。我該如何解決?

核心問題是cordova xwalk會生成多個arch文件,版本計算會乘以10並添加平臺代碼。本地版本構建爲一個包並且不乘以10.科爾多瓦的舊版本似乎正確地處理了這個問題。

回答

0

我已經實施了一個解決方法,只是爲原生版本添加了手動版本代碼。我真的不應該這樣做。它有效,但我不打算標記這個接受希望我會得到更好的答案。

這裏是天然的附加代碼(非XWalk構建)

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} 

現在這產生被按預期版本代碼: enter image description here