上传失败:您需要为您的 APK 使用不同的版本代码,因为您已经有一个带有版本代码的 APK
Upload failed: You need to use a different version code for your APK because you already have one with version code
情况:
如果这个问题已经被问了 3 次,请提前致歉。但是 none 这些解决方案对我有用。
我需要将新版本上传到 Google Play 我的 Ionic 应用程序。上传过程一直运行良好,但这次我收到此错误:
You need to use a different version code for your APK because you already have one with version code 101078.
发布过程:
我没有使用 Android Studio。
要发布应用程序,我只是通过命令行构建和签署应用程序,然后将其上传到 Google 开发者控制台。
对于新版本,我只是在创建 apk 之前更新 config.xml 中的版本号。
应用程序版本:
旧版本:(状态发布于Google播放)1.1.7代码版本:101078
新版本:(尝试在 Google 播放上上传)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?
我不知道我还能做什么。
如果你解决了这个谜语,我会为你建造一座雕塑!
谢谢!
编辑:
最后我决定卸载 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">
版本代码未被 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。
我忘了:这是 link 到 cordova 文档:
https://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#setting-the-version-code
对于旧版本代码 101078,也许您使用的是像 Crosswalk 这样的插件。
要解决此问题,只需执行以下步骤,您将准备好问题已解决的 .apk 文件。
第 1 步:清理 cordova 构建
$ cordova clean
第 2 步:再次生成 "android-release-unsigned.apk" 文件
$ ionic cordova build --release android
第 3 步:要对未签名的 APK 进行签名,运行 jarsigner 工具也包含在 JDK:
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore path-to-your-app/apk/android-release-unsigned.apk alias_name
第 4 步:您需要 运行 压缩对齐工具来优化 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
情况:
如果这个问题已经被问了 3 次,请提前致歉。但是 none 这些解决方案对我有用。
我需要将新版本上传到 Google Play 我的 Ionic 应用程序。上传过程一直运行良好,但这次我收到此错误:
You need to use a different version code for your APK because you already have one with version code 101078.
发布过程:
我没有使用 Android Studio。
要发布应用程序,我只是通过命令行构建和签署应用程序,然后将其上传到 Google 开发者控制台。
对于新版本,我只是在创建 apk 之前更新 config.xml 中的版本号。
应用程序版本:
旧版本:(状态发布于Google播放)1.1.7代码版本:101078
新版本:(尝试在 Google 播放上上传)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?
我不知道我还能做什么。
如果你解决了这个谜语,我会为你建造一座雕塑!
谢谢!
编辑:
最后我决定卸载 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">
版本代码未被 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。
我忘了:这是 link 到 cordova 文档: https://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#setting-the-version-code
对于旧版本代码 101078,也许您使用的是像 Crosswalk 这样的插件。
要解决此问题,只需执行以下步骤,您将准备好问题已解决的 .apk 文件。
第 1 步:清理 cordova 构建
$ cordova clean
第 2 步:再次生成 "android-release-unsigned.apk" 文件
$ ionic cordova build --release android
第 3 步:要对未签名的 APK 进行签名,运行 jarsigner 工具也包含在 JDK:
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore path-to-your-app/apk/android-release-unsigned.apk alias_name
第 4 步:您需要 运行 压缩对齐工具来优化 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