使用cordova for android构建错误的版本代码

gat*_*sbr 6 android cordova

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

<widget id="com.example.myapp"
        android-versionCode="7"
        version="0.9.1"
        >
Run Code Online (Sandbox Code Playgroud)

如何让cordova-cli构建一个版本号为7的apk?

aapt.exe l -a在生成的apk上运行显示A: android:versionCode(0x0101021b)=(type 0x10)0x460x46为70,如果我jarsigner的apk,并且zipalign和上传,谷歌也告诉我版本代码是70.

gat*_*sbr 7

platforms/android/build.gradle在第178行,我找到了我的问题的答案,

versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0")
Run Code Online (Sandbox Code Playgroud)

最后是+ "0"将我的版本代码从7变为70.删除+ "0"最后并将第178行更改为以下内容解决了这个问题.

versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode"))
Run Code Online (Sandbox Code Playgroud)

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

  • 我会对此保持谨慎.它们附加一个"0",因为在gradle文件的下一个20-30行中,它们正在向versionCode添加2,4,8或9.因此,如果你构建了`507`,并且它出现了'5078`,并且你取出了`+'0"`,你最终会看到构建`515`.他们似乎正试图共同选择versionCode来存储有关发布平台的一些信息.我不太明白为什么他们觉得他们需要这样做.... (4认同)
  • 为什么哦为什么他们最后添加0?这根本没有意义! (3认同)

小智 5

我有同样的问题,我正在使用Cordova 4.3.0.AndroidManifest.xml中的versionCode为"1",而.apk中的versionCode为"12".如果你在引用的行之后查看代码块,构建多个版本将为arm7添加"2",为x86添加"4".我有点明白为什么这样做了,但在我看来,最好让开发人员确定他们想要的versionCode.