环境:

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

更多相关文章

  1. Android自学总结――第一篇:关于导入项目时出的错误
  2. eclipse:运行 Android 项目时出现 “Unable to execute dex: Mult
  3. 用gradle编译任意结构的Android项目
  4. 10个经典的Android开源项目
  5. Android开发学习总结——搭建最新版本的Android开发环境
  6. Android中SQLite版本升级
  7. android-sdk-windows版本号下载
  8. Android 收集的开源项目和文章集合

随机推荐

  1. 带有过期时间的LRU实现(java版)
  2. Android中获取网络图片的三种方法
  3. java关键字系列(4)this
  4. android 4.0 StatusBar 架构
  5. 设计模式之代理模式(包含静态代理和动态代
  6. LockSupport:一个很灵活的线程工具类
  7. ICS 系统栏分析(一)
  8. java集合系列(9)TreeMap
  9. Android调用系统自带的设置界面
  10. 设计模式之观察者模式