Cómo actualizar el número de versión de la aplicación nativa de reacción

6 minutos de lectura

avatar de usuario
praveen prasad

Estoy usando React native con Android. ¿Cómo puedo actualizar el número de versión en la aplicación? Como estoy recibiendo este error.

Estoy generando un archivo según esta url
https://facebook.github.io/react-native/docs/signed-apk-android.html

Intenté modificar el archivo AndroidManifest.xml, pero después de compilarlo, ese archivo se vuelve a modificar automáticamente.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.facebook.react"
    android:versionCode="1"
    android:versionName="1.0" >

Aquí, modifiqué el XML:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.facebook.react"
    android:versionCode="2"
    android:versionName="1.1" >

Después, el archivo de compilación vuelve a cambiar automáticamente.

ingrese la descripción de la imagen aquí

  • android:versionCode=”2″ significa que cada vez que desee cargar una aplicación en Play Store, es necesario aumentar el código de versión y el código de versión, puede conservar lo que quiera sin impacto

    – Ajinkya

    10 de marzo de 2016 a las 18:48


  • no funciona, ya lo he hecho. He corregido mi pregunta.

    – Praveen Prasad

    10 de marzo de 2016 a las 18:49

avatar de usuario
jose roque

Deberías estar cambiando tu versionCode y versionName en android/app/build.gradle:

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"
        
        {...}
    }

    {...}
}

Tenga en cuenta que versionCode tiene que estar en un número entero que es más grande que los que se utilizan para las versiones anteriores, mientras que versionName es la versión legible por humanos que se puede mostrar a los usuarios.

  • Encontré la solución en el archivo que señalaste, pero en realidad estaba un poco más abajo. Había una sección que comenzaba con aplicaciónVariantes y ahí dentro el salida.versionCodeOverride se estaba configurando, que hizo lo que sugería el nombre y anuló el que estaba en la parte superior del archivo.

    – Aiden Montgomery

    18 mayo 2016 a las 12:01

  • @Noitidart si está construyendo con Android Studio y Gradle, cambiarlo aquí será suficiente. Anulará cualquier cosa que pongas en AndroidManifest.xml

    – José Roque

    6 jun 2017 a las 20:20

  • Si quiero que mi versión sea “2.2”, debo establecer versionCode en 2.2? no entiendo versionCode 🙁

    – Noitidart

    14 de noviembre de 2017 a las 23:53

  • @Noitidart versionCode es un valor destinado a Google/usted. Cuando subes a Google Play, espera versionCode ser mayor que el anterior versionCode, y también único para cada archivo subido. Personalmente, solo incremento manualmente versionCode por uno cada vez que preparo una subida a Google Play. Otras personas lo automatizan para incrementar en función de la confirmación de git u otro factor. versionName es lo que cambiaría a “2.2” para que sus usuarios vean ese número de versión cuando actualicen/descarguen su aplicación.

    – José Roque

    15 de noviembre de 2017 a las 2:27

  • @KTWorks sí, versionCode debe ser un número entero. versionName se puede establecer en 1.0.1 y mostrará ese valor a los usuarios.

    – José Roque

    29 de abril de 2018 a las 15:08

avatar de usuario
tgf

@Joseph Roque es correcto, necesita actualizar los números de versión en android/app/build.gradle.

Así es como automatizo esto y lo vinculo a la versión del paquete en package.json y git confirma.

En android/app/build.gradle:

/* Near the top */

import groovy.json.JsonSlurper

def getNpmVersion() {
    def inputFile = new File("../package.json")
    def packageJson = new JsonSlurper().parseText(inputFile.text)
    return packageJson["version"]
}
/* calculated from git commits to give sequential integers */
def getGitVersion() {
    def process = "git rev-list master --first-parent --count".execute()
    return process.text.toInteger()
}


......


def userVer = getNpmVersion()
def googleVer = getGitVersion()

android {
...
    defaultConfig {
        .....
        versionCode googleVer
        versionName userVer

        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }

Notas:

  • es importante que versionCode es un número entero, por lo que no podemos usar versiones semánticas aquí. Esto se usa en Play Store para saber qué versiones vienen después de otras; es por eso que está vinculado a las confirmaciones de git en getGitVersion

  • versionName sin embargo, se muestra a los usuarios: estoy usando versiones semánticas aquí y almacenando el valor real en mi package.json. Gracias a https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661

  • Andrew Jack analiza un método muy similar y un método para iOS en su artículo de Medium: medium.com/@andr3wjack/… . Es una gran lectura para las personas que desean que sus versiones coincidan con sus compilaciones.

    – DBbrown

    17 de marzo de 2017 a las 3:59

  • ¿Significa que cada vez que usé git cometer la versión cambia de forma incremental? ¿Y qué tipo de actualización se incrementa? Quiero decir, ¿comenzará en el número de parche?

    – Edison Pebojot

    2 de marzo de 2021 a las 11:28

  • @EdisonPebojot Sí, aunque solo cambiará una de las versiones. Hay dos tipos de versión: el código de versión que debe ser incremental y se basa en la cantidad de confirmaciones. Y el versionName que se toma de su paquete.json puede ser una cadena y es visible para el usuario. Es posible que desee leer esta respuesta: stackoverflow.com/a/10269683/1760776 para obtener más detalles

    – tgf

    2 de marzo de 2021 a las 22:23

  • El artículo de Andrew Jack en Medium ha sido eliminado. Sin embargo, aquí está su publicación de blog sobre el tema: blog.andrewjack.uk/versioning-react-native-apps.

    – Hal Müller

    13 de diciembre de 2021 a las 3:51

  • Necesito cambiar maestro a principal def process = "git rev-list main --first-parent --count".execute()

    – robersonfox

    26 ene a las 23:47


avatar de usuario
François Nadeau

Para aquellos que quieran automatizar esto y tener iOS al mismo tiempo, pueden usar versión nativa de reacción para establecer los números de versión.

Todo lo que necesita hacer es actualizar su versión número dentro del archivo package.json y ejecute lo siguiente:

$ npx react-native-version --never-amend

[RNV] Versioning Android...
[RNV] Android updated
[RNV] Versioning iOS...
[RNV] iOS updated
[RNV] Done
✨  Done in 0.39s.

Espero que esto pueda ayudar a otros.

  • Si se ha expulsado de la exposición, asegúrese de eliminar app.json; de lo contrario, los archivos de Android e iOS no se actualizarán.

    –Bjorn Reppen

    3 de febrero de 2021 a las 16:50

  • @bjorn-reppen Eliminar app.json en proyectos de Bare Workflow Expo no es la mejor solución, ya que Expo todavía usa App.json (Actualizaciones, por ejemplo) El problema se discute aquí: github.com/stovmascript/react-native-version/issues/105 Parcheé react-native-version 4.0.0 como una solución temporal hasta que se solucione.

    – ChrisW

    16 de julio de 2021 a las 20:08

Tuve el mismo problema y verifiqué todas las respuestas anteriores, cometí un error tonto por el cual nada funcionó para mí. En caso de que alguno de ustedes cometa el mismo error que el mío, intente esto.

  1. La versión puede ser un número decimal como 1.0 o 1.0.1, etc.
  2. Pero VersionCode no puede ser un número decimal Debería ser 1,2,3, etc. y no 1.1 o 2.2

Así que en proyecto/aplicación/construir.gradle

android {
defaultConfig {
    versionCode 1 // do not use decimal number here
    versionName "1.0" // you can use decimal number here.
    {...}
}
{...}
}

Selecciona el versionCode por debajo android en aplicación.json:

{
  "expo": {
    "name": "App Name",
...
    "android": {
      "package": "com.app.name",
      "permissions": [],
      "versionCode": 2
    }
  }
}

árbitro:https://docs.expo.io/versions/latest/workflow/configuration/#versioncodeversion-number-required-by-google-play-increment-by-one-for-each-release-must-be-an-integer -httpsdeveloperandroidcomstudiopublishversioninghtml

avatar de usuario
kvadityaaz

Si alguien se enfrenta

código de versión incorrecto, por ejemplo, – 31284

Entonces asegúrese de no usar SeparateBuildPerCPUArchitecture en android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

y

para actualizar el código de versión y el cambio de nombre en android/app/build.gradle:

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}

si estás usando exposición y obtener este problema, vaya a app.json y cambiar el versión a un número mayor.

{
  "expo": {
    "name": "nameofapp", // btw dont copy this
    "slug": "appslug",   // btw dont copy this
    "version": "1.0.0",  // here is where you change the version
    ...
    ...
    ...
  }
}

También debe cambiar el versión en package.json

{
  ...
  "name": "appname",  // btw dont copy this
  "version": "2.0.0", // here is where you change the version
  ...
  "android": {
    "versionCode": 2,
    ...
  }
  ...
}

¿Ha sido útil esta solución?