[Phonegap+Sencha Touch] 移动开发57 Cordova 5生成的安卓apk,versionCode错误(末尾多了个0)的解决办法
2015-07-29 10:29
627 查看
环境:
Cordova CLI 版本 5.1.1
Cordova Android 平台 版本 4.0.2
现象:
在我的Cordova项目中,config.xml 中指定了android-versionCode,如下:
生成的Android项目里面,AndroidManifest.xml中的android:versionCode也是对的,如下:
但是最后生成的apk运行的时候,用代码从PackageInfo获取到的versionCode却是202030 (下面的代码是用来获取versionCode的)
如果你把apk上架到某些应用市场,你也会发现版本号末尾多了个"0"。
原因:
google了一下,有人说是因为Cordova可以生成针对安卓不同cpu指令集的apk,每个apk要区别版本号,才会在原有versionCode后面加0(默认)、2(armv7)、4(x86)。cordova目前设计如此。
cordova是使用gradle构建的安卓项目,真正的AndroidManifest.xml是在这个路径:
而且可以看到,里面的android:versionCode已经多了个0了:
解决办法:
Cordova生成的Android项目中的 build.gradle, 在 178 行,有下面的一句:
看样子是这里给versionCode自动加了个"0"
如下修改 178 行(去掉 + "0"), 重新用Android studio打包,正常了。
(注:178行往下,可以看到有在versionCode后面加0(默认)、2(armv7)、4(x86)的配置)
欢迎加入Sencha Touch + Phonegap交流群
1群:194182999 (满)
2群:419834979
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
相关文章推荐
- sencha touch-2.4.1,pullrefresh设置store的param
- hdu 1532 网络流
- 彩色图像--色彩空间 YIQ 、YUV 、YCbCr 、YC1C2 和I1I2I3
- 函数的作用域
- 多校3 1008 Solve this interesting problem
- android 模拟器 hosts文件修改
- SIM900A发送超长短信
- 如果在数据库中存放正则表达式
- java 数据结构之 链式存储结构 队列
- 嵌入式linux------ffmpeg移植 解码H264(am335x解码H264到yuv420并通过SDL显示)
- 嵌入式linux------ffmpeg移植 解码H264(am335x解码H264到yuv420并通过SDL显示)
- 升级Xcode之后VVDocumenter-Xcode不能用的解决办法
- Hu不变矩原理及opencv实现
- string - memchr源码
- string - memcmp源码
- linux errno查看和使用
- iOS开发的一些奇巧淫技
- 嵌入式linux------ffmpeg移植 解码H264(am335x解码H264到yuv420并通过SDL显示)
- Chrome 控制台console的用法
- c++字符串