我的应用在android市场上的版本代码为2,版本名称为1.1

但是,今天更新的时候,我在manifest里把版本码改成了3,但是错误的把我的版本名改成了1.0.1,并把apk上传到了市场。

现在,我的应用程序的用户会在他们的手机上收到更新通知吗?还是我要重做一遍?


当前回答

版本的代码 代表你的代码的版本,android操作系统通过使用这个变量来检查是否更新这个代码是旧的还是新的。

版本名称 以-格式表示版本名称

(主要),(小)。(点)

字符串,仅用于可读字符串,功能版本代码已被OS使用。

其他回答

The answer from Tanoh could use some clarification. VersionCode is the equivalent of a build number. So typically an app will go through many iterations before release. Some of these iterations may make it to the Google Play store in the form of alpha, beta, and actual releases. Each successive iteration must have an incremented versionCode. However, typically you only increase the versionName when between public releases. Both numbers are significant. Your users need to know if the version they have on their phone is the latest or not (versionName) and the Play Store and CI systems such as bitrise rely on and/or update the build number (versionCode)

版本码——这是一个正整数,用于与其他版本码进行比较。它不会显示给用户,只是在某种程度上用于记录。您可以将它设置为您喜欢的任何整数,但建议您在后续版本中线性递增它。

版本名——这是用户看到的版本字符串。它不用于内部比较或其他用途,只是供用户查看。

例如:假设你发布了一个应用,它的初始versionCode可以是1,versionName也可以是1。一旦你对应用程序做了一些小的改变,想要发布一个更新,你可以将versionName设置为“1.1”(因为变化不是很大),而从逻辑上讲,你的versionCode应该是2(不管改变的大小)。

假设在另一种情况下,你发布了一个完全改版的应用程序,你可以将versionCode和versionName设置为“2”。

希望这能有所帮助。

你可以在这里阅读更多信息

不需要反转你的步骤。当您增加VersionCode时,这意味着您的应用程序已经升级了。VersionName只是一个字符串,为了便于用户阅读而呈现给用户。谷歌play不会根据VersionName采取任何行动。

在我的情况下,我向最终用户显示我的应用程序的版本,我在Manifest文件和build.grade中添加版本名称和版本代码

<?xml version="1.0" encoding="utf-8"?>
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.mydomain.myproject"
    android:versionCode="9106"
    android:versionName="9.1.06">

   ...
 </manifest

之后,我将这个变量用于我的活动或片段

try
    {
        versionName =  getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0).versionName;

    }
    catch (PackageManager.NameNotFoundException e) {
        versionName ="";

    }
    catch (ActivityNotFoundException e)
    {
        //e.printStackTrace();
        versionName ="";
    }

参考链接

android: versionCode

内部版本号。此数字仅用于确定一个版本是否比另一个版本更新,数值越大表示更新版本。这不是显示给用户的版本号;该数字由versionName属性设置。 取值必须为整数,例如“100”。您可以任意定义它,只要每个后续版本都有一个更高的数字。[…]

android: versionName

显示给用户的版本名。此属性可以设置为原始字符串或字符串资源的引用。字符串除了显示给用户外没有其他用途。versionCode属性保存内部使用的重要版本号。

读到这里,很明显versionName只是显示给用户的东西,versionCode才是重要的。只要不断增加,一切都会好起来的。