android - 上传失败 : You need to use a different version code for your APK because you already have one with version code

标签 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 中的版本号。

应用程序版本:

旧版本:(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' sdk版本:'16' targetSdkVersion:'22'

问题:

这是怎么回事?

versionCode 到底是怎么设置的?我可以硬编码吗?为什么无论我做什么,versionCode 都保持在 101078?

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

我不知道我还能做什么。

如果你解决了这个谜题,我会为你 build 一座雕塑!

谢谢!

编辑:

最后我决定卸载 CrossWalk,因为我并不完全需要它的好处。这样问题就解决了,我可以上传新版本了。

正如@e666 所指出的那样,我确实可以在 config.xml 中硬编码代码版本:

<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">

versionCode 没有被 Crosswalk 覆盖,而是被正确设置为 101079,这样我就可以将 apk 作为新版本上传。

如果您仍想保留 Crosswalk 并上传新版本,您可以通过在 Google 开发者控制台中切换到高级模式来完成。 请记住,Crosswalk 将导出两个 apk(armv7 和 x86),您需要同时上传这两个 apk。

有关操作方法的更多引用,您可以查看此答案:

What does this Google Play APK publish error message mean?

最佳答案

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

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

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

关于android - 上传失败 : You need to use a different version code for your APK because you already have one with version code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38877980/

相关文章:

Android 项目未解析任何静态 Assets

android - Android studio 中模拟器运行的WebView 无法上网,而Chrome 可以?

ios - 移动应用程序的 REST API 请求

android - Android应用无法播放mp3(本地存储的mp3)

cordova - 错误 : Could not find a driver for automationName 'Appium' and platformName 'Android'

angularjs - 如何在 Angular js中制作自定义指令或在指令中传递变量

javascript - 从 iOS 模拟器中的 Ionic (Cordova) 应用程序登录 Firebase Facebook

android - 延迟android PlusClient登录请求

android - TextView 中的 ImageSpan 对齐

android - 在 Android 启动 Activity 中为 windowBackground 保持正确的纵横比