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
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.
@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
def process = "git rev-list main --first-parent --count".execute()
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.
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.
{...}
}
{...}
}
Set the versionCode
under android
in app.json:
{
"expo": {
"name": "App Name",
...
"android": {
"package": "com.app.name",
"permissions": [],
"versionCode": 2
}
}
}
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"
{...}
}
{...}
}
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,
...
}
...
}
Success story sharing
2.2
? I don't understandversionCode
:(versionCode
is a value that's meant for Google/you. When you upload to Google Play, it expectsversionCode
to be greater than the previousversionCode
, and also unique for every uploaded file. Personally, I just manually incrementversionCode
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.1.0.1
and will display that value to users.