0

我在 Play 商店中有一个已发布的应用程序。我面临的问题是,看起来 Cordova 6(我刚刚升级到 6.5)已经改变了发布版本的生成。这是我的 config.xml

<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

这是我发布的应用程序的版本代码: 在此处输入图像描述

现在,在将 cordova 升级到 6.5 之后,当我进行构建过程时,将版本更改为 1.2.39,crosswalk版本使用正确的版本代码 102392 用于 ARM 和 102394 用于 x86。但是,本机版本现在具有版本代码 10239

这会导致升级问题,因为我当前的本机代码版本是“102389”,即 >“10239”

我尝试在我的 config.xml 中添加 android-versionCode,如下所示:

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

然而,这导致

  1. Xwalk x86 版本 = 1023904
  2. Xwalk 手臂版本 = 1023902
  3. 本机版本 = 102390

如您所见,现在 Xwalk 版本的数量比我现有的生产版本大得多。这也是不对的,因为即使在 SDK >=21 的设备中,Xwalk 版本也会优先于本机版本,这是不可取的。我该如何解决?

核心问题是cordova xwalk构建多个arch文件,版本计算乘以10加上平台代码。本机版本是作为一个包构建的,不会乘以 10。旧版本的 cordova 似乎已经正确处理了这个问题。

4

1 回答 1

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}

这现在会产生符合预期的版本代码: 在此处输入图像描述

于 2017-03-04T17:26:47.827 回答