使用Cordova构建Android应用程序时,生成的版本号不正确。

6

运行命令cordova build --release android会生成一个版本代码为70的apk文件。在config.xml文件中,对于小部件(widget),我已将其设置为:

<widget id="com.example.myapp"
        android-versionCode="7"
        version="0.9.1"
        >

我该如何让cordova-cli使用版本号7构建apk?

运行aapt.exe l -a命令查看生成的apk文件,可以看到A: android:versionCode(0x0101021b)=(type 0x10)0x46,其中0x46等于70。如果我对apk进行jarsigner、zipalign和上传,谷歌也会显示版本号为70。

2个回答

7

我发现解决我的问题的方法是,在platforms/android/build.gradle文件中的第178行:

versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0")

在最后,+ "0"将我的版本代码从7变成了70。删除末尾的+ "0"并将第178行更改为以下内容即可解决此问题。
versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode"))

现在运行 aapt.exe l -a 命令可以显示生成的apk中的 A: android:versionCode(0x0101021b)=(type 0x10)0x7


sed -i"" -e "s/ + "0"//" platforms/android/build.gradle - Aram
3
为什么他们要在末尾添加零呢?这根本没有任何意义! - Matt Votsikas McLean
1
经过一些更新,现在对我来说是第175行。此外,如果您在其中获得额外的2或4,或者如果您添加了额外的9或8(即创建版本10会导致18,或者在没有上述修复的情况下,版本10会创建版本108),则Chi-An的答案可能相关,这些可以在大约210和212行找到,仅需注释掉这些行即可正常工作,即//defaultConfig.versionCode += 8 - gattsbr
sed -i"" -e '/^[^/]defaultConfig.versionCode\s++=/ s/.///&/' - kindasimple
4
我会谨慎对待这个问题。他们在Gradle文件的接下来的20-30行中添加了2、4、8或9到versionCode,因此如果你正在构建507版本,它最终会变成5078版本,他们在versionCode中似乎试图存储一些关于发布平台的信息。如果你删掉"+0",你将看到构建515版本。我不太明白他们为什么觉得需要这样做... - Kip

5

我曾经遇到同样的问题,我使用Cordova 4.3.0。在AndroidManifest.xml中我的versionCode是"1",但在.apk文件中versionCode却变成了"12"。如果你查看引用行之后的代码块,构建多个版本将会添加一个"2"表示arm7,以及一个"4"表示x86。我有点明白为什么要这样做,但我认为让开发者自己决定他们想要的versionCode更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接