【问题标题】:Upload failed: You need to use a different version code for your APK because you already have one with version code上传失败:您需要为您的 APK 使用不同的版本代码,因为您已经有一个版本代码
【发布时间】:2016-08-10 15:39:48
【问题描述】:

情况:

如果这个问题已经被问了三遍,请提前道歉。但这些解决方案都不适合我。

我需要将我的 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 中的版本号。

应用版本:

旧版本:(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" ...

运行 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?

为什么 versionName 是 1.1.7 而不是 config.xml 中明确说明的 1.1.10?

我不知道我还能做什么。

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

谢谢!

编辑:

最后我决定卸载 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?

【问题讨论】:

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


    【解决方案1】:

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

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

    versionCode = MAJOR * 10000 + MINOR * 100 + PATCH
    

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

    您可以使用android-versionCodeconfig.xml 中明确指定版本代码

    此外,如果没有更新,您应该尝试清理所有平台文件夹。也许您看到的是旧版本的 apk。

    我忘记了:这是cordova docs的链接: https://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#setting-the-version-code

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

    【讨论】:

    • 谢谢已经澄清了很多事情。我确实使用人行横道。它可能会产生问题?
    • 你删除了吗?它在文档中说它将版本代码乘以 10,因此它解释了 101078(您可以查看我给您的链接)
    • 我想我们已经接近了。我已经删除并再次添加了 android。现在它因为 Crosswalk 创建了两个 apk,但这应该没问题。然后我在 config.xml 中添加了 android-versionCode="101079" - 但是当我查看 apk 时,这次生成的版本号为 102。但对于 Google Play,它必须高于 101078。我该怎么做?我怎么能强制它是101079?谢谢!
    • 如果你删除并添加 android 并且不指定版本代码它在做什么?
    • 可能是自动增加的。我已经在高级模式下上传了,我让我这么做了。这里仍然有一条错误消息:stackoverflow.com/questions/16060655/… 但它会起作用。当我确定这一点时,我会检查这个答案是否正确。再次感谢!
    【解决方案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 align 工具来优化 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
    

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2017-12-19
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 2020-12-06
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多