android: versionCode - Um valor inteiro que representa a versão do código do aplicativo, em relação a outras versões.
O valor é um número inteiro para que outros aplicativos possam avaliá-lo programaticamente, por exemplo, para verificar um relacionamento de atualização ou downgrade. Você pode definir o valor para qualquer número inteiro que desejar, mas certifique-se de que cada versão sucessiva do seu aplicativo use um valor maior. O sistema não impõe esse comportamento, mas aumentar o valor com versões sucessivas é normativo.
android: versionName - Um valor de sequência que representa a versão de lançamento do código do aplicativo, como deve ser mostrado aos usuários.
O valor é uma sequência para que você possa descrever a versão do aplicativo como uma sequência .. ou como qualquer outro tipo de identificador de versão absoluto ou relativo.
Como no android: versionCode, o sistema não usa esse valor para nenhum propósito interno, exceto para permitir que os aplicativos o exibam aos usuários. Os serviços de publicação também podem extrair o valor android: versionName para exibição aos usuários.
Normalmente, você lançaria a primeira versão do seu aplicativo com o versionCode definido como 1 e, em seguida, aumentaria monotonicamente o valor a cada lançamento, independentemente de o lançamento constituir um lançamento maior ou menor. Isso significa que o valor android: versionCode não tem necessariamente uma forte semelhança com a versão do aplicativo visível para o usuário (consulte android: versionName, abaixo). Os aplicativos e serviços de publicação não devem exibir esse valor de versão para os usuários.