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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传失败:您需要为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”...

运行获得:

在apk文件上运行sdk工具aapt我得到以下内容:

name ='com.myapp.myapp'versionCode ='101078'versionName ='1.1.7'platformBuildVersionName ='6.0-2704002'sdkVersion:'16'targetSdkVersion:'22'

问题:

这是怎么回事?

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

为什么versionName 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?

答案

Cordova在AndroidManifest.xml上覆盖你的变化是正常的。正确的解决方案是将版本放在config.xml中。

从cordova docs,如果您没有明确指定versionCode,则根据版本计算版本代码。这将是 :

versionCode = MAJOR * 10000 + MINOR * 100 + PATCH

所以android:versionCode="10110"是正常的。

您可以使用qazxsw poi在qazxsw poi中明确指定版本代码

如果不更新平台文件夹,也应该尝试清理它。也许你所看到的是你的apk的旧版本。

我忘了:这里是cordova docs的链接:config.xml

对于旧版本代码101078,您可能正在使用像Crosswalk这样的插件。

另一答案

要解决此问题,只需执行以下步骤即可解决您的.apk文件问题。

第1步:清洁cordova构建

android-versionCode

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

https://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#setting-the-version-code

第3步:要签署未签名的APK,请运行jarsigner工具,该工具也包含在JDK中:

  $ cordova clean

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

  $ ionic cordova build --release android

要么

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

以上是关于上传失败:您需要为APK使用不同的版本代码,因为您已经拥有版本代码的主要内容,如果未能解决你的问题,请参考以下文章

您需要为您的 APK 或 Android App Bundle 使用不同的版本代码

您需要为您的 APK 使用不同的版本代码,因为您已经有一个版本代码为 2

Playstore 错误 - 您需要为您的 APK 或 Android App Bundle 使用不同的版本代码,因为您已经有一个版本代码为 4

由于应用程序版本,将 apk 上传到播放商店失败

上传失败您需要使用版本号为29或更低的SDK

Google 控制台 APK 上传 - 新应用程序失败