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

97

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

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

He intentado 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í

Praveen Prasad
fuente
1
android: versionCode = "2" significa que cada vez que desee cargar apk en Play Store que sea necesario para aumentar el código de versión y el código de versión, puede mantener lo que desee sin impacto
Ajinkya
no funciona, ya lo he hecho. He corregido mi pregunta.
Praveen Prasad

Respuestas:

189

Deberías cambiar tu versionCodey versionNameen android/app/build.gradle:

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}
José Roque
fuente
Gracias, yo mismo vi ese archivo varias veces, pero me perdí esa parte.
Praveen Prasad
3
Encontré la solución en el archivo que señaló, pero en realidad estaba un poco más abajo. Había una sección que comenzaba con applicationVariants y allí se estaba configurando output.versionCodeOverride , que hizo lo que sugería el nombre y anuló la que estaba en la parte superior del archivo.
AidenMontgomery
1
@Noitidart si está compilando con Android Studio y Gradle, cambiarlo aquí será suficiente. Anulará todo lo que ponga en AndroidManifest.xml
Joseph Roque
13
@Noitidart versionCodees un valor que está destinado a Google / usted. Cuando subes a Google Play, se espera versionCodeque sea mayor que el anterior versionCodey también único para cada archivo subido. Personalmente, solo incremento manualmente versionCodeen uno cada vez que preparo una carga en Google Play. Otras personas lo automatizan para incrementar en función de la confirmación de git u otro factor. versionNamees lo que cambiaría a "2.2" para que sus usuarios vean ese número de versión cuando actualicen / descarguen su aplicación.
Joseph Roque
2
@KTWorks sí, versionCode debe ser un número entero. versionName se puede establecer en 1.0.1y mostrará ese valor a los usuarios.
Joseph Roque
90

@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.jsony 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 versionCodesea ​​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; por eso está vinculado a git commits engetGitVersion

  • versionNamesin 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

tgf
fuente
6
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 excelente lectura para las personas que desean que sus versiones coincidan con sus compilaciones.
DBrown
17

Para aquellos que quieran automatizar esto y tengan iOS al mismo tiempo, pueden usar react-native-version para configurar los números de versión.

Todo lo que necesita hacer es actualizar su número de versión dentro del archivo package.json y ejecutar 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.

Francois Nadeau
fuente
0

Si alguien se enfrenta

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

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

    {...}
}

{...}
}
kvadityaaz
fuente
0

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

Entonces en project / app / build.gradle

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