如果你正在阅读本文, 但没有遇到此问题, 那么你可能会问自己, 我为什么要关心应用程序的版本代码?不应该由Cordova自动处理吗?当然, 你有理由, 但是这就是问题所在, 它会被自动处理, 并且在你尝试在Google Play中上传新APK时会产生问题(通常, 除非你从非常老的版本更新了android平台, 否则它不会产生问题) 。
上周, 我正在使用一个旧的Cordova项目, 该项目的版本为1.3.3, 至少是该项目的config.xml文件中的widget标签的version属性值(由版本代码标识) 103038)。我决定使用cordova平台更新android将Android平台更新为最新版本。进行更改后, 我只是将版本提高到1.3.4(只是增加了错误修复版本号), 然后我构建了该应用程序并尝试将其发布到Google Play中。令我惊讶的是, 我遇到了以下问题:
你APK的版本代码必须高于[version]。
该数字是内部版本号, 仅用于确定一个版本是否比另一个版本新, 而更高的数字表示更新的版本。这不是向用户显示的版本号;该数字由versionName属性设置。该值必须设置为整数, 例如” 50″或” 500″。你可以根据需要定义它, 只要每个后续版本的编号都更高。
这根本没有任何意义, 因为我增加了版本, 而Cordova应该为我自动做到这一点。然后, 我使用aapt(Android资产打包工具)来转储有关我的APK的信息。该工具是SDK(和构建系统)的一部分, 可让你查看, 创建和更新与Zip兼容的存档(zip, jar, apk)。它还可以将资源编译为二进制资产。
转储我使用的信息:
aapt dump badging MyReleasedFile.apk
一旦我查看了这些信息, 确实该应用程序的版本更高, 但不是该应用程序的版本代码。我上传的APK是10304, 当然还不到103038。
显然, 此错误是由于新的android平台引起的, 该平台的自动版本控制系统无法像以前的版本那样工作。为了解决它, 我只需要手动更改版本代码。
更改清单中的版本代码
要在Cordova中更改apk的版本代码, 你需要在config.xml文件的widget标记中提供一个新属性。 android-versionCode属性将覆盖cordova生成的默认版本代码, 并在Play商店中修复错误(如果有的话):
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.mycompany.myappname"
version="1.3.4"
android-versionCode="103040"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0"
>
现在103040高于103038, 祝你编码愉快!