THE SITUATION:
如果这个问题已经被问过三次,请提前抱歉 . 但这些解决方案都不适用于我 .
我需要将新版本上传到我的Ionic应用的Google Play . 上传过程一直很好,但这次我得到这个错误:
You need to use a different version code for your APK because you already have one with version code 101078.
THE PUBLISHING PROCESS:
我没有使用Android Studio .
要发布应用程序,我只需通过命令行构建和签署应用程序,然后将其上传到Google Developer Console .
对于新版本,我只是在创建apk之前更新config.xml中的版本号 .
APP VERSIONS:
旧版本:(在Google Play上发布的状态)1.1.7代码版本:101078
新版本:(尝试在Google Play上传)1.1.10
ATTEMPTS TO RESOLVE:
我试图手动将代码版本设置为更高的数字 . 目前我在./config.xml中有这个设置:
<widget id="com.myapp.myapp" version="1.1.10" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
在./platforms/android/AndroidManifest.xml文件中,我手动将设置更改为:
<manifest android:hardwareAccelerated="true" android:versionCode="101079" android:versionName="1.1.10" package="com.meetinghand.meetinghand" xmlns:android="http://schemas.android.com/apk/res/android">
但是在我运行 cordova build --release android
之后,该值会自动重置为android:versionCode = "10110" ...
RUNNING AAPT:
在apk文件上运行sdk工具aapt我得到以下内容:
name ='com.myapp.myapp'versionCode ='101078'versionName ='1.1.7'platformBuildVersionName ='6.0-2704002'sdkVersion:'16'targetSdkVersion:'22'
THE QUESTION:
这是怎么回事?
versionCode究竟是如何设置的?我可以硬编码吗?为什么,无论我做什么,versionCode都保持在101078?
为什么versionName 1.1.7而不是1.1.10,因为它在config.xml中有明确说明?
我不知道我还能做什么 .
如果你解决这个谜题,我将为你建造一座雕塑!
谢谢!
EDIT:
最后我决定卸载CrossWalk因为并不严格需要它的好处 . 这样问题就解决了,我可以上传新版本 .
我确实可以硬编码config.xml中的代码版本,如@ e666所指出的:
<widget android-versionCode="101079" id="com.myapp.myapp" version="1.1.10" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
版本代码没有被Crosswalk覆盖,但被正确设置为101079,这样我就可以将apk上传为新版本 .
如果您仍想保留Crosswalk并上传新版本,可以通过切换到Google Developer Console中的高级模式来完成 . 请记住,Crosswalk将导出两个apk(armv7和x86),您需要上传两个 .
有关如何操作的更多参考,请查看以下答案:
2 回答
cordova在
AndroidManifest.xml
上覆盖您的更改是正常的 . 正确的解决方案是将版本放在config.xml
中 .从cordova docs,如果您没有明确指定versionCode,则根据版本计算版本代码 . 这将是 :
所以
android:versionCode="10110"
是正常的 .您可以在
config.xml
中使用android-versionCode
明确指定版本代码如果不更新平台文件夹,也应该尝试清理它 . 也许你所看到的是你的apk的旧版本 .
我忘了:这是cordova文档的链接:https://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#setting-the-version-code
对于旧版本代码101078,您可能正在使用像Crosswalk这样的插件 .
要解决此问题,只需执行以下步骤即可解决您的.apk文件问题 .
第1步:清洁cordova构建
第2步:再次生成“android-release-unsigned.apk”文件
第3步:要签署未签名的APK,请运行jarsigner工具,该工具也包含在JDK中:
第4步:您需要运行zip对齐工具来优化APK
要么