ChatGPT解决这个技术问题 Extra ChatGPT

How to update version number of react native app

I am using React native with Android. How can I update version number in the app? As I am getting this error.

I am generating file as per this url https://facebook.github.io/react-native/docs/signed-apk-android.html

I have tried modifying AndroidManifest.xml file, but after I build it, that file gets automatically modified back.

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

Here, I modified the XML:

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

After, build file automatically changes back.

https://i.stack.imgur.com/bhOmm.png

android:versionCode="2" mean whenever you want to upload apk on play store that is necessary to increase version code & version code you can keep whatever you want doesn't impact
doesn't work, I have already done it. I have corrected my question.

D
DysphoricUnicorn

You should be changing your versionCode and versionName in android/app/build.gradle:

android {

    defaultConfig {

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

    {...}
}

Note that versionCode has to be in an integer that is larger than the ones used for previous releases while versionName is the human readable version that may be shown to users.


I found the solution in the file that you pointed to, but it was actually slightly further down. There was a section that started with applicationVariants and in there the output.versionCodeOverride was getting set, which did as the name suggested and overrode the one at the top of the file.
@Noitidart if you're building with Android Studio and Gradle, changing it here will be enough. It will override anything you put in AndroidManifest.xml
If I want my version to be "2.2" should I set versionCode to 2.2? I don't understand versionCode :(
@Noitidart versionCode is a value that's meant for Google/you. When you upload to Google Play, it expects versionCode to be greater than the previous versionCode, and also unique for every uploaded file. Personally, I just manually increment versionCode by one each time I prepare an upload to Google Play. Other people automate it to increment based on the git commit, or other factor. versionName is what you would change to "2.2" so that your users will see that version number when they update/download your app.
@KTWorks yes, versionCode must be an integer. versionName can be set to 1.0.1 and will display that value to users.
d
danielbeard

@Joseph Roque is correct, you need to update the version numbers in android/app/build.gradle.

Here's how I automate this and tie it into the package's version in package.json and git commits.

In 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"
        }
    }

Notes:

It's important that versionCode is an integer - so we can't use semantic versioning here. This is used on the play store to tell which versions come after others - that's why it's tied to git commits in getGitVersion

versionName however is shown to users - I'm using semantic versioning here and storing the real value in my package.json. Thanks to https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661


Andrew Jack discusses a very similar method, and a method for iOS in his Medium article: medium.com/@andr3wjack/… . It is a great read for people wanting to keep their versions matching with their builds.
Does it mean that every time I used git commit the version changes incrementally? And which update type is incremented? I mean, will it start in the patch number?
@EdisonPebojot Yes, though only one of the versions will change. There are two version types - the versionCode which must be incremental and is based on number of commits. And the versionName which is taken from your package.json can be a string and is visible to the user. You may want to read this answer: stackoverflow.com/a/10269683/1760776 for more details
Andrew Jack's article on Medium has been deleted. Here's his blog post on the topic, though: blog.andrewjack.uk/versioning-react-native-apps.
Need change master to main def process = "git rev-list main --first-parent --count".execute()
F
Francois Nadeau

For those wanting to automate this, and have iOS at the same time, you can use react-native-version to set the version numbers.

All you need to do is update your version number inside the package.json file and run the following:

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

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

I hope this can help others.


If you have ejected from expo, make sure the app.json is deleted otherwise the android and ios files will not get updated.
@bjorn-reppen Deleting app.json in Bare Workflow Expo projects is not the best solution, as App.json is still used by Expo (Updates for example) The issue is being discussed here: github.com/stovmascript/react-native-version/issues/105 I patched react-native-version 4.0.0 as a temporary workaround until it gets fixed.
V
Vasanth

I had the same problem and I checked all the above answer, I had a made a silly mistake because of which nothing worked for me. Just in case any of you do same mistake as mine try this.

Version can be a decimal number like 1.0 or 1.0.1 etc But VersionCode cannot be decimal number It should be 1,2,3 etc and not 1.1 or 2.2

So in project/app/build.gradle

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

o
oOEric

Set the versionCode under android in app.json:

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

ref: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


k
kvadityaaz

If someone is facing

wrong version code eg - 31284

Then make sure to not use SeparateBuildPerCPUArchitecture in android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

and

to update the version code and name change in android/app/build.gradle:

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}

A
Atif Khan

If you're using expo and getting this issue, go to app.json and change the version to a higher number.

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

You need to also change the version in package.json

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

关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now