[Phonegap+Sencha Touch] 移动开发57 Cordova 5生成的安卓apk,versionCode错误(末尾多了个0)的解决办法

环境:

Cordova CLI 版本 5.1.1

Cordova Android 平台 版本 4.0.2


现象:

在我的Cordova项目中,config.xml 中指定了android-versionCode,如下:

android-versionCode="20203"

生成的Android项目里面,AndroidManifest.xml中的android:versionCode也是对的,如下:

android:versionCode="20203"
但是最后生成的apk运行的时候,用代码从PackageInfo获取到的versionCode却是202030 (下面的代码是用来获取versionCode的)

Activity act = cordova.getActivity();
Context appContext = act.getApplicationContext();
PackageManager pm = appContext.getPackageManager();
PackageInfo pInfo = pm.getPackageInfo(act.getPackageName(), 0);
int versionCode = 0;
if (pInfo != null) {
    versionCode = pInfo.versionCode;
}

如果你把apk上架到某些应用市场,你也会发现版本号末尾多了个"0"


原因:

google了一下,有人说是因为Cordova可以生成针对安卓不同cpu指令集的apk,每个apk要区别版本号,才会在原有versionCode后面加0(默认)、2(armv7)、4(x86)。cordova目前设计如此。

cordova是使用gradle构建的安卓项目,真正的AndroidManifest.xml是在这个路径:

生成的安卓项目\build\intermediates\manifests\full\debug\AndroidManifest.xml


而且可以看到,里面的android:versionCode已经多了个0了:

android:versionCode="202030"

解决办法:

Cordova生成的Android项目中的 build.gradle, 在 178 行,有下面的一句:

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

看样子是这里给versionCode自动加了个"0"


如下修改 178 行(去掉+ "0"), 重新用Android studio打包,正常了。

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

(注:178行往下,可以看到有在versionCode后面加0(默认)、2(armv7)、4(x86)的配置)






欢迎加入Sencha Touch + Phonegap交流群

1群:194182999 (满)

2群:419834979

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘_博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值