上传失败:您需要为APK使用不同的版本代码,因为您已经拥有版本代码

时间:2016-08-10 15:39:49

标签: android cordova ionic-framework google-play apk

情况:

如果已经三次询问此问题,请提前抱歉。但这些解决方案都不适合我。

我需要将新版本上传到我的Ionic应用的Google Play。上传过程它一直很好,但这次我得到这个错误:

You need to use a different version code for your APK because you already have one with version code 101078.

出版流程:

我没有使用Android Studio。

要发布应用,我只是通过命令行构建和签署应用,然后将其上传到Google Developer Console。

对于新版本,我只是在创建apk之前更新config.xml中的版本号。

APP版本:

旧版本:(在Google Play上发布的状态)1.1.7代码版本:101078

新版本:(尝试在Google Play上传)1.1.10

要解决的问题:

我尝试手动将代码版本设置为更高的数字。 目前我在./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'

问题:

发生了什么事?

versionCode究竟是如何设置的?我可以硬编码吗?为什么,无论我做什么,versionCode都保持在101078?

为什么版本号1.1.7而不是1.1.10,因为它在config.xml中有明确说明?

我不知道还能做些什么。

如果你解决这个问题,我会为你建造一座雕塑!

谢谢!

修改

最后我决定卸载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),您需要上传两个。

有关如何操作的更多参考,请查看以下答案:

What does this Google Play APK publish error message mean?

2 个答案:

答案 0 :(得分:3)

Cordova在AndroidManifest.xml覆盖您的更改是正常的。正确的解决方案是将版本放在config.xml中。

如果您没有明确指定versionCode,则从cordova文档中可以根据版本计算版本代码。它将是:

versionCode = MAJOR * 10000 + MINOR * 100 + PATCH

所以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这样的插件。

答案 1 :(得分:2)

要解决此问题,请执行以下步骤,您将准备好.apk文件,此问题已解决。

步骤1:清理cordova版本

  $ cordova clean

第2步:再次生成“ android-release-unsigned.apk”文件

  $ ionic cordova build --release android

步骤3:要对未签名的APK进行签名,请运行JDK中也包含的jarsigner工具:

  $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore path-to-your-app/apk/android-release-unsigned.apk alias_name

第4步:您需要运行zip对齐工具来优化APK

$ zipalign -v 4 path-to-your-app/apk/android-release-unsigned.apk path-to-your-app/apk/your-app-name.apk

$ path-to-zipalign/zipalign -v 4 path-to-your-app/apk/android-release-unsigned.apk path-to-your-app/apk/your-app-name.apk