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.g
You should be changing your versionCode
and versionName
in android/app/build.gradle
:
android {
defaultConfig {
versionCode 1
versionName "1.0"
{...}
}
{...}
}
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 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"
{...}
}
{...}
}
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
@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
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.
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.
{...}
}
{...}
}