如何更新React Native应用的版本号


97

我正在Android上使用React native。如何更新应用程序中的版本号?当我收到此错误。

我正在根据此URL https://facebook.github.io/react-native/docs/signed-apk-android.html生成文件

我曾尝试修改AndroidManifest.xml文件,但是在构建它之后,该文件会自动被修改回来。

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

在这里,我修改了XML:

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

之后,构建文件会自动更改回。

在此处输入图片说明


1
android:versionCode =“ 2”表示每当您要在Play商店上载增加版本代码和版本代码所必需的apk时,您都可以保留想要的内容而不会影响
Ajinkya

不起作用,我已经完成了。我已经纠正了我的问题。
Praveen Prasad

Answers:


189

您应该在versionCodeversionName中进行更改android/app/build.gradle

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}

谢谢,我本人多次看到该文件,但只是错过了那部分。
Praveen Prasad

3
我在您所指向的文件中找到了解决方案,但实际上它稍有下降。有一个以applicationVariants开头的部分,在那里设置了output.versionCodeOverride,其名称与建议的一样,并且覆盖了文件顶部的那个。
艾登·蒙哥马利

1
@Noitidart(如果您使用Android Studio和Gradle构建),则在此处进行更改就足够了。它将覆盖您放入AndroidManifest.xml中的所有内容
Joseph Roque

13
@NoitidartversionCode是适用于Google /您的值。当您上传到Google Play时,它期望versionCode比以前的版本更大versionCode,并且对于每个上传的文件来说都是唯一的。就个人而言,versionCode每次准备上传到Google Play时,我只会手动增加一个。其他人根据git commit或其他因素自动使其递增。versionName就是您要更改为“ 2.2”的位置,以便您的用户在更新/下载您的应用时会看到该版本号。
约瑟夫·罗克

2
@KTWorks是的,versionCode必须为整数。可以将versionName设置为1.0.1并将向用户显示该值。
约瑟夫·罗克

90

@Joseph Roque是正确的,您需要更新中的版本号android/app/build.gradle

这是我将其自动化并将其绑定到package.jsongit commits包的版本中的方式。

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

笔记:

  • versionCode整数很重要-因此我们在这里不能使用语义版本控制。在Play商店中使用它来判断哪个版本紧随其他版本之后-这就是为什么它与git commitsgetGitVersion

  • versionName但是显示给用户-我在这里使用语义版本控制并将实际值存储在我的package.json。感谢https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661


6
安德鲁·杰克(Andrew Jack)在他的媒体文章(medium.com/@andr3wjack/…)中讨论了一种非常类似的方法以及一种iOS方法。对于希望保持其版本与版本匹配的人们来说,这是一本不错的书。
DBrown

17

对于那些希望自动执行此操作并同时具有iOS的用户,可以使用react-native-version设置版本号。

您需要做的就是更新package.json文件中的版本号,然后运行以下命令:

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

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

我希望这可以帮助其他人。



0

如果有人面对

版本代码错误,例如-31284

然后确保不要在其中使用SeparateBuildPerCPUArchitecture android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

更新版本代码和名称更改android/app/build.gradle

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}

0

我遇到了同样的问题,我检查了以上所有答案,但我犯了一个愚蠢的错误,因此对我没有任何帮助。万一你们中的任何人犯了与我相同的错误,请尝试此操作。

  1. 版本可以是十进制数字,例如1.0或1.0.1等
  2. 但是VersionCode不能为十进制数字,应为1,2,3等,而不是1.1或2.2

所以在project / app / build.gradle中

android {
defaultConfig {
    versionCode 1 // do not use decimal number here
    versionName "1.0" // you can use decimal number here.
    {...}
}
{...}
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.